会员
周边
众包
新闻
博问
闪存
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
不凡
思想创造世界
理解构造函数和析构函数的调用顺序
#include
<
fstream
>
using
namespace
std;
ofstream
out
(
"
order.txt
"
);
#define
CLASS(ID) class ID{\
public
: \
ID(
int
)
{
out
<<
#ID
"
constructor\n
"
;}
\
~
ID()
{
out
<<
#ID
"
destructor\n
"
;}
\
};
CLASS(base1);
CLASS(member1);
CLASS(member2);
CLASS(member3);
CLASS(member4);
class
derived1 :
public
base1
{
member1 m1;
member2 m2;
public
:
derived1(
int
) : m2(
1
), m1(
2
), base1(
3
)
{
out
<<
"
derived1 constructor\n
"
;
}
~
derived1()
{
out
<<
"
derived1 destructor\n
"
;
}
}
;
class
derived2 :
public
derived1
{
member3 m3;
member4 m4;
public
:
derived2():m3(
1
),derived1(
2
),m4(
3
)
{
out
<<
"
derived2 constructor\n
"
;
}
~
derived2()
{
out
<<
"
derived2 destructor\n
"
;
}
}
;
int
_tmain(
int
argc, _TCHAR
*
argv[])
{
derived2 d2;
return
0
;
}
order.txt的输出内容:
base1 constructor
member1 constructor
member2 constructor
derived1 constructor
member3 constructor
member4 constructor
derived2 constructor
derived2 destructor
member4 destructor
member3 destructor
derived1 destructor
member2 destructor
member1 destructor
base1 destructor
posted on
2005-05-11 13:25
hunter_gio
阅读(
1163
) 评论(
0
)
收藏
举报
刷新页面
返回顶部
导航
博客园
首页
新随笔
联系
订阅
管理
公告