c++ - 多个构造函数的析构函数

标签 c++

我在 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/

相关文章:

c++ - 多个if语句中的相同操作,如何减少代码冗余

php - 在 PHP_FUNCTION() C++ 中更改返回字符串的大小写

c++ - SURF 和 SIFT 的旋转变化性能

c++ - 查找合并节点时出现段错误?

c++ 如何在文件中打印带逗号(而不是点)的双十进制数

c++ - C++关于两个类构造函数的问题

c++ - 客户端和服务器

c++ - 对非常量对象的 constexpr 引用

c++ - 对象数组的 vector - push_back()

c++ - (key, value)对结构的内存分配,并从注册表中读取