class具有动态数组成员的类

时间:2013-10-01 13:55:32

标签: c++ memory dynamic allocation

我有一个带动态数组(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
}

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

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

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

1 个答案:

答案 0 :(得分:7)

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

App(int N) : myDA(N) {}

请注意,除非您遵循rule of three,否则您的DA课程会被破坏,或使用std::vector<double>std::unique_ptr<double[]>boost scoped array简化问题:

#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.
};