Loading... ## 语法: ```cpp ~类名(){ 函数体; } ``` ## 程序执行析构函数的几种情况 <div class="tip inlineBlock success"> * 如果在一个函数中定义了一个对象,当这个函数被调用结束是,对象应该释放,在对象释放前会自动调用执行析构函数 * 静态局部对象在函数调用结束时对象不释放,因此也不调用析构函数,只有main函数结束或调用exit函数结束程序时,才调用静态局部对象的析构函数 * 如果用new运算符动态地建立了一个对象,当用delete运算符释放该对象时,先调用该对象的析构函数 </div> ## 调用析构函数和构造函数的顺序 先构造后析构,后构造先析构 ## 代码演示: ```cpp #include<iostream> using namespace std; class Time { public: Time(int a, int b, int c) : aa(a), bb(b), cc(c) { }; ~Time(){ cout << aa << " " << bb << " " << cc << endl; } private: int aa, bb, cc; }; int main() { Time t1 = Time(1, 0, 0); Time t2 = Time(2, 0, 0); return 0; } ```  从上图会发现t2**后构造** **先调用**t2的析构函数, 而t1**先构造** **后调用**t1的构造函数。 最后修改:2022 年 06 月 28 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果文章有用,请随意打赏。