也许我说的不清楚,现在写出来。class a{
a(int* m);
virtual ~a();
int* n;
};
a::a(int* m){
n=m;
}
a::~a(){
free n ;//这句要不要?
}
void main90
{
int m;
a obj(&m);
......
}
a(int* m);
virtual ~a();
int* n;
};
a::a(int* m){
n=m;
}
a::~a(){
free n ;//这句要不要?
}
void main90
{
int m;
a obj(&m);
......
}
int *m=new int;
a obj(m)
}
则有两种选择,可以在主程序中delete,也可以在class中delete,但在class中delete必须考虑如果该类析构之后不会再引用该m。一般不会在class中delete,而在使用new的代码下delete,可读性好,又安全
。在class的构造函数中使用new就另当别论了但有时必须在析构函数中delete,甚至在不同的线程中删除另一个线程中创建的对象。会很麻烦