class具有动态数组成员的类

tho*_*rmi 2 c++ memory allocation dynamic

我有一个带动态数组(DA)的类

class DA{
  private:
    double* array;
    int size N;
    //other stuff
  public:
    DA(){
       array=NULL;
    }
    DA(int PN){
      N=PN;
      array=new double[N];
    };
    //destructor and other stuff
}
Run Code Online (Sandbox Code Playgroud)

这似乎没问题.现在我想要一个具有一个DA对象的类"Application":

class App{
  private:
    DA myDA;
  public:
    App(int N){
      //create myDA with array of size N
      DA temp(N);
      myDA=temp;
    };
}
Run Code Online (Sandbox Code Playgroud)

问题是,我不知道如何在App构造函数中创建myDA.我这样做,内存分配给temp,然后myDA指向temp.但我想在构造函数完成后删除为temp分配的内存.因此,当我执行程序时出现内存错误.那么如何正确分配内存呢?

jua*_*nza 7

使用构造函数初始化列表:

App(int N) : myDA(N) {}
Run Code Online (Sandbox Code Playgroud)

请注意,DA除非您遵循三个规则,否则您的类将被破坏,或者通过使用an std::vector<double>,an std::unique_ptr<double[]>boost范围数组来简化问题:

#include <vector>

class DA{
  private:
    std::vector<double> data; // "array" is a std lib container name
  public:
    DA(int PN) : data(PN) {}
    // no need to write destructor, copy constructor or assignment operator.
};
Run Code Online (Sandbox Code Playgroud)