析构函数的一些特点

巧了我就是萌 提交于 2019-12-07 08:24:37

完成的工作:

  类似构造函数有一个初始化部分和一个函数体部分,析构函数也有一个函数体和一个析构部分。构造函数中,先进行成员的初始化,再执行函数体;而在析构函数中,是先执行函数体,后销毁成员。成员按初始化顺序的逆序销毁。


调用析构函数的时机:

无论何时一个对象被销毁,就会自动调用其析构函数。

  • 变量在离开其作用域时被销毁

  • 当一个对象被销毁时,其成员被销毁

  • 容器被销毁时,其元素被销毁

  • 对于动态分配的对象,当对指向它的指针应用delete运算符时被销毁


合成析构函数:

  类似构造函数,当一个类未定义自己的析构函数时,编译器会为它定义一个合成的析构函数。
例如,下面的代码片段等价于Sales_data的合成析构函数:

class Sales_data{
public:
    //成员会被自动销毁,除此之外不需要做其他事情
    ~Sales_data(){}
    //其他成员的定义

注:在空析构函数体执行完毕后,成员会被自动销毁。认识到析构函数体自身并不直接销毁成员是非常重要的。成员是在析构函数体之后隐含的析构阶段中被销毁的。在整个对象销毁过程中,析构函数体是作为成员销毁步骤之外的另一部分进行的。


参考:《C++ Primer》

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!