我在 C++ 中有两个构造函数和一个析构函数。当我为我的对象使用第一个构造函数时,调用析构函数来删除我想要的 A[],但是当我使用第二个构造函数时,我不需要调用析构函数,但 C++ 编译器无论如何都会调用它,这会导致错误。解决此问题的最佳方法是什么?
Tree(int n) {
A = new int[n];
}
Tree(int data*, int n) {
A = data;
}
~Tree(){
delete [] A;
}
最佳答案
存储一个标志,指示析构函数是否应调用 delete。
请注意,在手动管理内存时,您还需要一个用户定义的复制构造函数和复制赋值运算符。
关于c++ - 多个构造函数的析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7735542/