欢迎光临散文网 会员登陆 & 注册

析构函数

2023-02-07 14:28 作者:江不默  | 我要投稿

/*

析构函数(destructor) :

与构造函数相反,当对象结束其生命周期,

如对象所在的函数已调用完毕时,系统自动执行析构函数。


析构函数往往用来做“清理善后” 的工作

(例如在建立对象时用new开辟了一片内存空间,

delete会自动调用析构函数后释放内存)。

1.不能有参数 , 所以不可重载

2.无返回值


3.当类中含有指针时 

delete 该类的一个 对象,不会撤销里面指针所指的空间,但析构函数可以


所以 析构函数三法则:

有复制构造函数和赋值运算符重载(例如将=的功能变成深复制),需要析构函数 

*/


/*

c++中delete和析构函数之间的区别:

https://www.cnblogs.com/qbdj/p/10882213.html

*/

#include<iostream>

using namespace std;

class CDemo {

public:

    ~CDemo() {  //析构函数

        cout << "Destructor called"<<endl;

    }

};

int main() {

    CDemo array[2];  //构造函数调用2次

    CDemo* pTest = new CDemo;  //构造函数调用

    delete pTest;  //析构函数调用

    cout << "-----------------------" << endl;

    pTest = new CDemo[2];  //构造函数调用2次

    delete[] pTest;  //析构函数调用2次

    cout << "Main ends." << endl;

    return 0;

}


析构函数的评论 (共 条)

分享到微博请遵守国家法律