【C/C++】类之间的纵向关系——继承的概念

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述

c语言内容💖:

专栏:c语言之路重点知识整合

【c语言】全部知识点总结


一、继承的概念

继承是类之间的纵向关系,是C++面向对象中的重要特性

继承的类称为派生类(子类),被继承的类称为基类(父类)

子类类名后加: 继承方式 父类

class CFather{};
class CSon:public CFather{};	//class 子类名:继承方式 父类名

子类继承父类 可以使用父类的成员,也会包含父类

  • 如果子类和父类有同名的成员,默认使用子类的成员
class CFather
{
public:
	int money;
	CFather():money(500) {}
};
class CSon:public CFather	
{
public:
	int money;
	CSon():money(50){}
};
int main()
{
	CSon son;
	
	cout << son.money << endl;		//子类成员
	cout << son.CSon::money << endl;	//子类成员
	return 0;
}

在这里插入图片描述
如果想使用重名父类中的成员,可以通过类名作用域显式指定

	cout << son.CFather::money << endl;

在这里插入图片描述

二、子类和父类内存空间分布

成员在内存空间分布为:先父类成员后子类成员,而每个类中的成员分布与在类中声明的顺序一致。

子类对象所占用的空间:子类继承父类,相当于将父类的成员包含到自己的类里,所以定义子类对象所占用的空间大小除了子类自身的成员还包括父类的成员。

  • 父类对象的内存空间只包含父类自己的属性和方法,不包含任何子类的属性和方法

在这里插入图片描述

class CFather
{
public:
	int m_dad;
	int money;
};
class CSon :public CFather
{
public:
	int m_son;
	int money;
	CSon() :m_son(5)
	{
		m_dad = 30;
		CFather::money = 200;
	}
};
	CSon son;
	cout << "对象首地址:" << (unsigned int)&son << endl;
	cout << (unsigned int)&son.m_dad << endl;
	cout << (unsigned int)&son.CFather::money << endl;
	cout << (unsigned int)&son.m_son << endl;
	cout << (unsigned int)&son.CSon::money << endl;

	cout << sizeof(CSon) << "    " << sizeof(CFather) << endl;

	return 0;
}

在这里插入图片描述

父类空间在前,子类空间在后,排布顺序:父类->子类自上而下

初始化成员属性,父类成员在父类中进行初始化,子类成员在子类中进行初始化

继承的方式、优点等写在后面文章…


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天喜Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值