码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-05-09 03:52:15      阅读:374      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   class   code   java   

过程式析构:

测试案例: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++中对象析构顺序研究

标签:des   style   blog   class   code   java   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!