问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

游戏开发之C++继承与派生(包含访问控制)(C++基础)

发布网友 发布时间:2024-10-03 17:02

我来回答

1个回答

热心网友 时间:2024-11-05 08:42

游戏开发之C++继承与派生(包含访问控制)(C++基础)1.继承与派生

继承是站在子类的角度上来说的,派生是站在父类的角度来说的。

继承是复用父类的功能,实现代码重用。

1.继承具有传递性;

2.继承不具有对称性;

3.基类是对派生类的抽象,派生类是对基类的具体化。

继承的声明语法: class 派生类名:权限描述符 继承父类1,权限描述符 继承父类2,...{成员列表}

TIPS:父类(基类)名必须是已定义的变量名。

????//基类A????class?A????{????public:????????A()????????{????????????std::cout?<<?__FUNCTION__?<<?"?"?<<?__LINE__?<<?std::endl;????????}????????void?PrintA()????????{????????????std::cout?<<?__FUNCTION__?<<?"?"?<<?__LINE__?<<?std::endl;????????}????};????//派生类B????//继承声明语法????class?B?:public?A????{????public:????????void?PrintB()????????{????????????std::cout?<<?__FUNCTION__?<<?"?"?<<?__LINE__?<<?std::endl;????????}????};????int?main()????{????????//调用方式????????B?b;????????b.PrintA();????????b.PrintB();????????return?0;????}2.访问控制

主要体现在:

派生类成员对基类成员的访问权限。

通过派生类对象对基类成员的访问权限。

2.1 公有继承

公有继承,继承之后对父类的访问权限不变。 派生类内部: ①基类的public和protected成员:访问属性在派生类中保持不变,即在派生类中也是public和protected权限。 ②基类的private成员:不可直接访问,但其仍然从基类被继承到派生类中,需要添加为友元类才可直接访问。 ③派生类的成员函数可以直接访问基类的public和protected成员,但不能直接访问基类的private成员。 派生类对象: 只能访问基类public成员。

2.2 保护继承

保护继承:继承之后对父类的访问权限全部修改为保护级别,私有变量除外。 派生类内部: ①基类的public和protected成员:都已protected身份出现在派生类中。 ②基类的private成员:不可直接访问,但其仍然从基类被继承到派生类中,需要添加为友元类才可直接访问。 ③派生类的成员函数可以直接访问基类的public和protected成员,但不能直接访问基类的private成员。 派生类对象: 通过派生类对象,不可访问从基类继承的任意成员。

2.3 私有继承

私有继承:继承之后类外不允许访问,所有成员修改为私有成员。 派生类内部: ①基类的public和protected成员:都以private身份出现在派生类中。 ②基类的private成员:不能直接访问。 ③派生类的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。 派生类对象: 通过派生类对象,不可以访问基类继承的任意成员。

2.4 实例????class?A????{????public:????????int?a;????//类外不允许访问,但是继承类可以访问(要求:继承权限必须是公有权限或保护权限)????protected:????????int?b;????private:????????int?c;????};????//公有继承,继承之后对父类的访问权限不变。????class?B?:public?A????{????public:????????B()????????{????????????a?=?1;//公有权限????????????b?=?2;//保护权限????????????//c?=?3;?无法访问????????}????};????//保护继承,继承之后对父类的访问权限全部修改为保护级别,私有变量除外。????class?C?:protected?A????{????public:????????C()????????{????????????a?=?1;//保护权限????????????b?=?2;//保护权限????????????//c?=?3;无法访问????????}????};????//私有继承,继承之后类外不允许访问,所有成员修改为私有成员。????class?D?:private?A????{????public:????????D()????????{????????????a?=?1;//私有权限????????????b?=?2;//私有权限????????}????};????int?main()????{????????B?b;????????//基类的protected和private无法访问,只能访问public权限的成员变量????????b.a?=?1;????????//基类的所有成员变量均不可直接访问????????C?c;????????//基类的所有成员变量均不能直接访问????????D?d;????????//说明基类的private也被继承下来,只是无法直接访问????????sizeof(b);//12????????sizeof(c);//12????????sizeof(d);//12????????return?0;????}2.5 总结

&emsp;&emsp;即不管是共有、保护、私有继承,派生类内部依然遵照基类的规则。而派生类对象则会发生改变。 版本声明:本文为CSDN博主[ufgnix0802]的原创文章。\ 原文链接:(https://blog.csdn.net/qq135595696/article/details/119941144)

原文:https://juejin.cn/post/7095289847908139016

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
菜豆矮化病毒病传毒介体是什么? 菜豆曲矮花叶病毒病是怎样进行病害的检验与检疫? 菜豆矮化病毒病是怎么进行病害的检验与检疫? 菜豆夏枯病毒病病原特性是什么? 菜豆畸矮病毒病有怎样的病原特性? 菜豆矮化病毒病有什么症状? 菜豆曲矮花叶病毒病病原的特性是什么? 宾得K30可用的最便宜的长焦镜头 有位朋友推荐了神备e金融平台,据说炒股专业,不知道是不是真的? 有位朋友推荐了神备e金融平台,据说炒股非常的专业,不知道是不是真_百度... ...星座,我是1991年10月3日中午快12点出生的,出生地天津,阴历是八月二 ... 我是白羊座的,女,1986年3月31日,A型血,早上11点10分左右出生的。 癫痫病的早期症状明显吗 癫痫病的早期症状怎么分辨 爱奇艺怎么卸载不干净! 华为手机写字框怎么变成黑色了呢? ...家里的wifi了 别的手机也能连上 只有这个手机不能连 别人家的wifi能... 王金智说明 沈阳拓展哪个基地最好! 广州有什么传统甜点? 水浒群英传的介绍 青草之上,处处为见,独立最厉害之物。(猜十二生肖,请解释一下,谢谢) 水浒群英传新手FAQ ...之王,处处都是得意之处,爱演之物。(猜十二生肖,请解释一下,谢谢) 沈阳植物园的真人CS还有吗?具体位置在哪? 水浒群英传游戏背景 水浒群英传新手引导 美丽之心处处外表可见。心狠之心无人能知。十二生肖中是什么动物_百度... 水浒群英传游戏特色 OPPO A59s与OPPO R9s相比哪个更适合女生用? 武汉城建金地和悦地址在哪里? 武汉武汉城建金地和悦是什么装修? 红蓍吃多了有好处吗?谢谢了,大神帮忙啊 ...并转移到肝部以及淋巴结,请问该采用哪种方法治疗? 我的智能手机下载了搜狗输入法已安装使用,为什么关机后在开机就成了系 ... ...下载的软件都不见了。然后手机总是说搜狗输入法出现错误,_百度... 魅蓝光黑屏 ...但在这个网页内的其他窗口就不是QQ拼音输入,求办法 南京市王府大街秣陵路108号,我要办理无行贿犯罪证明,那里下午几点上班啊... 斗鱼粉丝徽章怎么升级 斗鱼粉丝徽章升级方法 我是阳厉1980年11月23日23时30分出生,请大师帮我看看八字,谢谢. ...突来的冷空气让他感冒了,电话了不停的咳嗽,我该让他去买点什么药呢... 我爸爸有过敏性的咳嗽,遇到烟啊、冷空气啊等等就会不停的咳嗽,该怎么办... ...冷空气不停的咳嗽很久,很多偏方都不管用,什么药会有效果啊 在梦里梦见自己的亲人去世了在梦里哭,突然醒来还是一个劲的哭怎么回事... 一个梯形里面有一个三角形,三角形的底是十厘米,面积是40平方厘米... ...个梯形,已知梯形比三角形面积大40平方厘米,梯形的下底CD是多少厘... 把一块梯形分成两部分,一部分是平行四边形,面积是40平方米,另一... ...边长为10厘米的正方形分割成一个三角形和一个梯形。梯形的面积比三角... ...的正方形分割成一个三角形和一个梯形。梯形面积比三角形面积多40平方...