我有一个带动态数组(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分配的内存。因此,当我执行程序时出现内存错误。那么如何正确分配内存呢?
答案 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.
};