1.动态分配的对象的析构函数
1 class man{ 2 public: 3 man(){ 4 cout<<"man begin"<<endl; 5 }; 6 ~man(){ 7 cout<<"man end"<<endl; 8 } 9 }; 10 11 int _tmain(int argc, _TCHAR* argv[]) 12 { 13 man *m = new man(); 14 return 0; 15 }
输出为 :
man begin
动态分配的类必须在执行delete函数后才执行析构函数;
在13行后加入 delete m;
输出为:
man begin
man end
2.局部的值对象的析构函数
局部对象的析构函数执行是在其所在的{}结束时执行
1 class man{ 2 public: 3 man(){ 4 cout<<"man begin"<<endl; 5 }; 6 ~man(){ 7 cout<<"man end"<<endl; 8 } 9 }; 10 void runMan() 11 { 12 man m; 13 cout <<"man run"<<endl; 14 } 15 int _tmain(int argc, _TCHAR* argv[]) 16 { 17 runMan(); 18 return 0; 19 }
输出结果为:
man begin
man run
man end
假如修改runMan()的实现形式为
1 void runMan() 2 { 3 { 4 man m; 5 } 6 cout <<"run man"<<endl; 7 }
输出结果为:
man begin
man end
man run
学习笔记---C++析构函数心得,布布扣,bubuko.com
原文:http://www.cnblogs.com/xijiyuan/p/3714817.html