父类、父类成员、子类、子类成员的构造析构顺序

文章讨论了C++中类的构造和析构过程,特别是涉及继承时的顺序。构造过程从基类到子类成员,而析构则逆序进行。成员变量的初始化重点在于初始化列表,特别是引用、const和自定义类型成员。如果未显式指定,编译器会自动处理。
摘要由CSDN通过智能技术生成

class BASE {
public:
	BASE() { cout << "create BASE" << endl; }
	~BASE(){ cout << "delete BASE" << endl; }
};
class BaseClient {
public:
	BaseClient() { cout << "create BaseClient" << endl; }
	~BaseClient() { cout << "delete BaseClient" << endl; }
};
class Base:public BASE {
public:
	Base() { cout << "create Base" << endl; }
	~Base() { cout << "delete Base" << endl; }
private:
	BaseClient bc;
};
class DerivedClient {
public:
	DerivedClient() { cout << "create DerivedClient" << endl; }
	~DerivedClient() { cout << "delete DerivedClient" << endl; }
};
class Derived:public Base {
public:
	Derived() { cout << "create Derived" << endl; }
	~Derived() { cout << "delete Derived" << endl; }
private:
	DerivedClient dc;
};

Derived d;

构造顺序:BASE -> BaseClient  -> Base -> DerivedClient ->Derived  

                 父类成员->父类->子类成员->子类

析构顺序:Derived -> DerivedClient -> Base ->BaseClient ->BASE

                 子类->子类成员->父类->父类成员

1、真正对成员变量初始化的位置是初始化列表,构造函数内是赋值

2、类中包含引用成员变量、const成员变量、自定义类型成员变量,必须在初始化列表位置进行初始化

3、若用户没有显示写出初始化列表,编译器会自动补全

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值