析构函数(destructor)

来源:互联网 发布:电脑运行网络命令大全 编辑:程序博客网 时间:2024/06/13 06:17

成员函数的一种:(消亡前的善后工作)

1.名字与类名相同
2.在前面加“~”
3.没有参数和返回值
4.一个类最多只有一个析构函数

编译器自动生成缺省的析构函数且自动调用

观察调用析构函数的次数
这里写图片描述

析构函数的调用顺序:

#include<iostream>using namespace std;class demo{    int id;    public:        demo(int i){            id = i;            cout << "id =" << id << "constructed" << endl;        }        ~demo(){            cout << "id =" << id << "destructed" << endl;        }};demo d1(1);void func(){    static demo d2(2);    demo d3(3);    cout << "func" <<endl;}int main(){    demo d4(4);    d4 = 6;    cout << "main" << endl;    {        demo d5(5);    }    func();    cout << "main ends" << endl;    return 0;}

这里写图片描述

由结果易知:

  1. d1是全局变量,最先声明,最后释放
  2. d4在main函数结束后释放,结果不显示在控制台中
  3. d4被赋值,临时对象申请后立即被释放
  4. d5声明以后作用域立即结束,所以紧接着释放
  5. 调用func,静态变量d2声明,在主函数结束时才会被释放
  6. d3在func函数结束时被释放

C++设计的一个思想:最先声明的最后被释放