相关疑难解决方法(0)

三阶规则与C++ 11一起成为五次规则?

因此,在观看了关于右值引用的精彩演讲之后,我认为每个类都会受益于这样的"移动构造函数",template<class T> MyClass(T&& other) 编辑,当然还有"移动赋值运算符",template<class T> MyClass& operator=(T&& other)正如Philipp在他的回答中指出的,如果它已经动态分配成员,或通常存储指针.就像你应该有一个copy-ctor,赋值运算符和析构函数,如果之前提到的点适用.思考?

c++ constructor rvalue-reference rule-of-three c++11

325
推荐指数
5
解决办法
7万
查看次数

模板类c中的析构函数:如何删除可能是指针或非指针的字段?

我有模板类Array,其中模板类型T应该是指针或非指针类型.

template<class T>
class TArray
{   
     static const int max_len=100;
     T* data;
     int length;

  public:
     TArray(){data=new T[max_len]; this->length=0;} 
     void Add(T value){data[length++]=value;}   
     ~TArray();
};
Run Code Online (Sandbox Code Playgroud)

问题是如何释放空间,因为我们不能调用delete这样的指针类型

template<class T>
TArray<T>::~TArray()
{
    //for(int i =0; i < length; i++)
    //  delete data[i]; // NOT WORKING WITH OBJECTS THAT ARE NOT POINTERS !!!
    delete[] data;
}
Run Code Online (Sandbox Code Playgroud)

我们有加班

class A
{
    int* a;
  public:
    A(int n){a = new int[n];}
    ~A(){delete[] a;}
};
Run Code Online (Sandbox Code Playgroud)

并创建两个模板类实例

// Create array of doubles
TArray<double>* double_array …
Run Code Online (Sandbox Code Playgroud)

c++ templates destructor

3
推荐指数
1
解决办法
6401
查看次数