首页 > 编程语言 > 详细

c++中对象析构顺序研究

时间:2014-05-08 22:35:29      阅读:501      评论:0      收藏:0      [点我收藏+]

过程式析构:

测试案例:test.cpp

 

bubuko.com,布布扣
#include <iostream>
using namespace std;

class Test
{
public:
  Test(int dt=0){data=dt;}
  ~Test(){cout<<data<<endl;}
private:
  int data;
};

int w(void)
{
  Test b(7);
  Test c(8);
}

int main(int argc,char **argv)
{
  Test a(0);
  if(1==1)
  {Test a(1);Test b(2);}

  w();

  if(1==1)
  {Test a(3);Test b(4);}
  Test c(5);
  return 0;
}
bubuko.com,布布扣


程序结果:2 1 8 7 4 3 5 0

假设结论(析构时候顺序): 1.正序析构包含函数块 2.反序析构包含对象

对象式析构:

测试案例:test2.cpp

bubuko.com,布布扣
#include <iostream>
using namespace std;

class Test
{
public:
  Test(int dt=0){data=dt;cout<<data<<":construct"<<endl;}
  ~Test(){cout<<data<<":desctruct"<<endl;}
private:
  int data;
};

class Test2
{
public:
  Test2(int dt=0):a(1),b(2){data=dt;}
  ~Test2(){cout<<data<<":Test2"<<endl;}
private:
  int data;
  Test a;
  Test b;
  static Test c;
  static Test d;
};

Test Test2::c(3);
Test Test2::d(4);

int main(int argc,char **argv)
{
  Test2 e; 
  return 0;
}
bubuko.com,布布扣

 

程序结果:

3:construct
4:construct
1:construct
2:construct
0:Test2
2:desctruct
1:desctruct
4:desctruct
3:desctruct

假设结论(析构顺序):先析构自己,再析构普通成员对象 定义的反序,再析构static对象 定义的反序

c++中对象析构顺序研究,布布扣,bubuko.com

c++中对象析构顺序研究

原文:http://www.cnblogs.com/antiatom/p/3716353.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!