C++继承机制(二)——继承中的构造和析构顺序、继承同名成员的处理方式

目录:
本篇涉及内容:
  • 继承中的构造和析构顺序
  • 继承同名非静态成员的处理方式
  • 继承同名静态成员的处理方式
继承中的构造和析构顺序:
class object {
public:
	object() {
		cout << "object构造函数" << endl;
	}

	~object() {
		cout << "object析构函数" << endl;
	}
};

class SuperClass {
public:

	SuperClass() {
		cout << "SuperClass构造函数" << endl;
	}

	~SuperClass() {
		cout << "SuperClass析构函数" << endl;
	}
	object o1;
};

class SubClass : public SuperClass {
public:
	SubClass() {
		cout << "SubClass构造函数" << endl;
	}

	~SubClass() {
		cout << "SubClass析构函数" << endl;
	}

	object o2;

};

void main() {
	SubClass sub;
}

输出结果:
在这里插入图片描述

结论:

  • 构造顺序:
  1. 先找到SubClass的构造函数,发现其有父类则跳转到SuperClass构造函数.
  2. 执行SuperClass构造函数前,先构造完其成员对象后再执行父类构造函数.
  3. 然后跳转到SubClass构造函数,先构造完SubClass成员对象,最后再执行SubClass构造函数.

即:父类中的成员对象压栈——父类压栈——子类中的成员对象压栈——子类压栈

  • 析构顺序:

对照上述的压栈顺序进行的弹栈顺序即为析构顺序

继承同名非静态成员的处理方式:

在这里插入图片描述
结论:

  • 当子类中的成员(变量、函数)与继承过来的父类(变量、函数)同名时,继承过来的所有同名数据会被当前子类的成员数据隐藏掉(包括父类中的所有重载函数都会被隐藏)
  • 若想要访问到父类中的成员数据则需要加上父类的作用域
继承同名静态成员的处理方式:

在这里插入图片描述

这里处理方式跟上述相似,需要注意的点是:C++中静态成员通过类名来直接访问的格式是类名::静态方法/类名::静态变量名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值