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

chatgpt/2023/9/26 14:06:43

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥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;
}

在这里插入图片描述

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

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

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


在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5313543.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

vue-cli4升级到vue-cli5的踩坑记录

前言 最近对部分项目升级了vue-cli脚手架&#xff0c;记录一下 问题一&#xff1a; scss/less/css中无法引入public下的静态资源 问题描述 在样式文件中使用静态资源路径导致编译无法通过 错误信息如下&#xff1a; Module not found: Error: Cant resolve /img/login/lo…

无涯教程-jQuery - scrollLeft( val )方法函数

scrollLeft(val)方法用于将所有匹配元素上的向左滚动偏移量设置为传递的值。 此方法适用于可见和隐藏元素。 scrollLeft( val ) - 语法 selector.scrollLeft( val ) 这是此方法使用的所有参数的描述- val - 代表所需滚动左偏移量的正数。 scrollLeft( val ) - 示例 以…

常微分方程建模R包ecode(二)——绘制相速矢量场

本节中我们考虑一个更为复杂的常微分方程模型&#xff0c; d X C d t ν ( X A Y A ) − β ⋅ X C ⋅ ( Y C Y A ) − ( μ g ) ⋅ X C , ( 1 ) d Y C d t β ⋅ X C ⋅ ( Y C Y A ) − ( μ g ρ ) ⋅ Y C , ( 2 ) d X A d t g ⋅ X C − β ⋅ X A ⋅ ( Y C Y A …

Android9、11 有线网络开关设置

Android9、11 有线网络开关设置 Android9、11 有线网络开关设置_android 以太网开关_峥嵘life的博客-CSDN博客

【Axure高保真原型】可视化地图-广州市

今天和大家分享可视化地图-广州市的原型模板&#xff0c;移入对应区域&#xff0c;该区域会高亮显示&#xff0c;并且显示该区域的数据。模板是用Axure原生元件制作&#xff0c;里面的行政可以自由修改样式&#xff0c;对应显示的数据在中继器表格里修改即可。具体效果可以观看…

基于springboot+mybatis+thymeleaf+html产品销售与分析系统

基于springbootmybatisthymeleafhtml产品销售与分析系统 一、系统介绍二、功能展示1.下单(批发商)2.订单管理&#xff08;批发商&#xff09;3.首页(厂家管理员)4.订单管理&#xff08;厂家管理员&#xff09;5.商品管理&#xff08;厂家管理员&#xff09;6.统计分析&#xff…

想了解好用的翻译pdf的软件吗?

在全球化的时代背景下&#xff0c;跨国贸易越来越普遍&#xff0c;跨语言沟通也越来越频繁。小黄是一家跨国公司的员工&#xff0c;他梦想能在全球各地拓展自己的业务&#xff0c;奈何遇到了一个巨大的挑战&#xff1a;跨语言沟通。在这其中&#xff0c;pdf文件是他经常接收到的…

机器学习-Basic Concept

机器学习(Basic Concept) videopptblog Where does the error come from? 在前面我们讨论误差的时候&#xff0c;我们提到了Average Error On Testing Data是最重要的 A more complex model does not lead to better performance on test data Bias And Variance Bias(偏差) …
推荐文章