组合类的构造函数的调用顺序

文章来源:https://bbs.csdn.net/topics/390253882

“构造函数调用顺序:先调用内嵌对象的构造函数(按内嵌时的声明顺序,先声明者先构造)。然后调用本类的构造函数。(析构函数的调用顺序相反)”

#include<iostream> using namespace std; class Part //部件类 { public: Part() {cout<<"Part default construction called"<<endl;} Part(int i) {cout<<"Part: "<<i<<" construction called"<<endl;} ~Part() {cout<<"Part deconstruction called"<<endl;} private: int val; }; class Whole { public: Whole(); Whole(int i,int j,int k); ~Whole(); private: //这三个变量的声明顺序改变,打印输出的结果仍然一样 Part one; Part two; int date; }; Whole::Whole() { date=0;} Whole::Whole(int i,int j,int k) :one(j),date(k),two(i) //这里的初始化顺序按照one(2),date(3),two(1)进行,按照i,j,k的顺序来的. :/*one(j),*/date(k), two(i) //默认构造one { cout<<"Whole's construction called!"<<endl; } Whole::~Whole() { cout<<"Whole deconstruction called!"<<endl; } int main(void) { Whole w(1, 2, 3); return 1; }

输出结果:

Part: 2 construction called
Part: 1 construction called
Whole's construction called!


Whole deconstruction called!
Part deconstruction called
Part deconstruction called

“构造函数调用顺序:先调用内嵌对象的构造函数(按内嵌时的声明顺序,先声明者先构造,比如上面的按照i,j,k)。然后调用本类的构造函数。(析构函数的调用顺序相反)”

 

转载于:https://www.cnblogs.com/Stephen-Qin/p/11512427.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值