c++ - 默认析构函数有作用吗?

标签 c++ destructor

我想知道默认的类析构函数在被调用时是否真的做了任何事情。

我一直在研究它,我发现如果我创建一个带有调用其自身析构函数的函数的类,它根本不会做任何事情(即所有变量保持不变并且实例仍然存在并且可用) .

这是否意味着类析构函数可以被认为是所有类都具有的继承虚函数并且可以重新定义它(删除指针等并清除成员变量)但是如果它没有被重新定义它什么都不做?

如果是这样,析构函数不能本质上用作“清除所有数据”类型的函数,并通过清除动态内存分配的变量并重新使用它而不是让计算机来使代码的某些部分更有效在堆上找到新的内存块?

谢谢。

最佳答案

  • 默认构造函数调用所有成员变量的默认构造函数,不包括基本类型(char、int、指针)。
  • 可以显式调用析构函数,但不代表对象的分配。如果对象在堆栈上,那么它就不可能对它做任何事情。
  • 默认情况下析构函数不是虚拟的,但如果您打算从该类继承,它们确实应该是虚拟的。
  • 如果对象被解除分配(超出范围、从堆中删除或封闭对象以任何方式被销毁),销毁器将被调用。

关于c++ - 默认析构函数有作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14910198/

相关文章:

多次调用 C++ 析构函数

c++ - C++中删除对象

c++ - #define 代码行到别的东西

c++ - 即使还有足够的内存,内存分配也失败

c++ - 错误 C2156 : pragma must be outside function - why is it happening in this case?

C++ - 在基元上运行析构函数?

c++ - 为什么基类析构函数调用免费

c++ - 复制构造函数、析构函数和赋值运算符。我们什么时候不需要它们?

C++ 析构函数作为虚函数?

c++ - 从编译时已知的字符串中检索类型