c++protected继承(CPP公有继承、保护继承以及私有继承)

2024-10-10 02:45:28 1

c++protected继承(CPP公有继承、保护继承以及私有继承)

大家好,今天小编来为大家解答以下的问题,关于c++protected继承,CPP公有继承、保护继承以及私有继承这个很多人还不知道,现在让我们一起来看看吧!

本文目录

CPP公有继承、保护继承以及私有继承

在c++的继承控制中,有三种不同的控制权限,分别是public、protected和private。定义派生类时,若不显示加上这三个关键字,就会使用默认的方式,用struct定义的类是默认public继承,class定义的类是默认private继承。

使用public继承时,派生类内部可以访问基类中public和protected成员,但是类外只能通过派生类的对象访问基类的public成员。

​ (1)基类的public成员在派生类中依然是public的。

​ (2)基类中的protected成员在派生类中依然是protected的。

​ (3)基类中的private成员在派生类中不可访问。

使用protected继承时,派生类内部可以访问基类中public和protected成员,类外不能通过派生类的对象访问基类的成员(可以在派生类中添加公有成员函数接口间接访问基类中的public和protected成员)。

​ (1)基类的public成员在派生类中变为protected成员。

​ (2)基类的protected成员在派生类中依然是protected成员。

​ (3)基类中的private成员在派生类中不可访问。

使用private继承时,派生类内部可以访问基类中public和protected成员,并且类外也不能通过派生类的对象访问基类的成员(可以在派生类中添加公有成员函数接口间接访问基类中的public和protected成员)。

​ (1)基类的public成员在派生类中变成private成员。

​ (2)基类的protected成员在派生类中变成private成员。

​ (3)基类的private成员在派生类中不可访问。

c++继承是如何工作的

答:C++继承有三种方式:public、protected、private 指定继承方式

不同的继承方式会影响基类成员在派生类中的访问权限。

1、 public继承方式

基类中所有 public 成员在派生类中为 public 属性;

基类中所有 protected 成员在派生类中为 protected 属性;

基类中所有 private 成员在派生类中不能使用。

2、 protected继承方式

基类中的所有 public 成员在派生类中为 protected 属性;

基类中的所有 protected 成员在派生类中为 protected 属性;

基类中的所有 private 成员在派生类中不能使用。

3、 private继承方式

基类中的所有 public 成员在派生类中均为 private 属性;

基类中的所有 protected 成员在派生类中均为 private 属性;

基类中的所有 private 成员在派生类中不能使用。

扩展资料:

通过C++继承方式可以发现:

1、 基类成员在派生类中的访问权限不得高于继承方式中指定的权限。

例如,当继承方式为 protected 时,那么基类成员在派生类中的访问权限最高也为 protected,高于 protected 的会降级为 protected,但低于 protected 不会升级。

再如,当继承方式为 public 时,那么基类成员在派生类中的访问权限将保持不变。

也就是说,继承方式中的 public、protected、private 是用来指明基类成员在派生类中的最高访问权限的。

2、不管继承方式如何,基类中的 private 成员在派生类中始终不能使用(不能在派生类的成员函数中访问或调用)。

3、如果希望基类的成员能够被派生类继承并且毫无障碍地使用,那么这些成员只能声明为 public 或 protected;只有那些不希望在派生类中使用的成员才声明为 private。

4、如果希望基类的成员既不向外暴露(不能通过对象访问),还能在派生类中使用,那么只能声明为 protected。

注意,我们这里说的是基类的 private 成员不能在派生类中使用,并没有说基类的 private 成员不能被继承。

实际上,基类的 private 成员是能够被继承的,并且(成员变量)会占用派生类对象的内存,它只是在派生类中不可见,导致无法使用罢了。private 成员的这种特性,能够很好的对派生类隐藏基类的实现,以体现面向对象的封装性。

由于 private 和 protected 继承方式会改变基类成员在派生类中的访问权限,导致继承关系复杂,所以实际开发中我们一般使用 public。

参考资料来源:百度百科-C++继承

c++protected是什么意思

  C++:protected访问说明符 。一个类自身的对象是可以访问protected的成员的 ,protected类型的成员在一个类中与pravite类型的成员性质亦一样的,只是在派生继承时性质不同,pravite不能被派生出来的类(也就是子类)调用(访问),而protected是可以被派生出来的类调用的。  protected专门就是为继承(子类)设计的 用public继承 那么基类所有的访问标识在子类不变 protected还是protected protected只有类本身 和类的子类可以访问,对象是无法访问的。  有这么一条原则:在继承的时候,无论用什么方式(public.protected.private),子类随时都可以访问父类的非private变量或函数。

C++中,类的protected究竟有什么作用

  protected专门就是为继承(子类)设计的 用public继承,基类所有的访问标识在子类不变, protected还是protected 。  C++编程思想中是这么说的,public意味着随后的定义对所有人都适用;private意味着除了该类型的创建者和该类型的内部成员函数之外,任何人都无法访问这些定义;而protected是继承的类可以访问protected的成员,但不能访问private的成员。

c++类中的protected什么时候用

protected,主要是介于public和private之间的一种针对继续关系而来的设计,一般很少用到1.public继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:public, protected, private2.protected继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:protected, protected, private3.private继承:基类public成员,protected成员,private成员的访问属性在派生类中分别变成:private, private, private但无论哪种继承方式,上面两点都没有改变:1.private成员只能被本类成员(类内)和友元访问,不能被派生类访问;2.protected成员可以被派生类(类内)访问。

C++中,类的继承有哪些类型,其之间有什么区别

  一,C++中,类的常用的继承方式有三种,分别是:公有继承(public)、私有继承(private)、保护继承(protected);  二,三者之间的区别:  1,公有继承时,水平访问和垂直访问对基类中的公有成员不受限制;  2,私有继承时,水平访问和垂直访问对基类中的公有成员也不能访问;  3,保护继承时,对于垂直访问同于公有继承,对于水平访问同于私有继承;  4,对于基类中的私有成员,只能被基类中的成员函数和友元函数所访问,不能被其他的函数访问。

C++继承的继承方式

公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。3. 保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。下面列出三种不同的继承方式的基类特性和派生类特性。  public protected private 公有继承 public protected 不可见 私有继承 private private 不可见 保护继承 protected protected 不可见 为了进一步理解三种不同的继承方式在其成员的可见性方面的区别,下面从三种不同角度进行讨论。 (1) 基类成员对其对象的可见性:公有成员可见,其他不可见。这里保护成员同于私有成员。(2) 基类成员对派生类的可见性:公有成员和保护成员可见,而私有成员不可见。这里保护成员同于公有成员。(3) 基类成员对派生类对象的可见性:公有成员可见,其他成员不可见。所以,在公有继承时,派生类的对象可以访问基类中的公有成员;派生类的成员函数可以访问基类中的公有成员和保护成员。这里,一定要区分清楚派生类的对象和派生类中的成员函数对基类的访问是不同的。 (1) 基类成员对其对象的可见性:公有成员可见,其他成员不可见。(2) 基类成员对派生类的可见性:公有成员和保护成员是可见的,而私有成员是不可见的。(3) 基类成员对派生类对象的可见性:所有成员都是不可见的。所以,在私有继承时,基类的成员只能由派生类中的成员函数访问,而且无法再往下继承。 这种继承方式与私有继承方式的情况相同。两者的区别仅在于对派生类的成员而言,对基类成员有不同的可见性。上述所说的可见性也就是可访问性。关于可访问性还有另的一种说法。这种规则中,称派生类的对象对基类访问为水平访问,称派生类的派生类对基类的访问为垂直访问。

C++中,基类protected能给子类直接调用

公有继承不改变基类成员的属性,也就是说基类的protected成员在子类中还是protected属性。

而类的对象是不能访问protected成员的,但类的成员函数是能访问protected成员的。

所以,基类的成员函数能调用自己的protected成员(其对象不能),子类的成员函数也能调用基类的protected成员(其对象不能)

class A{public:A(int x,int y):x(x),y(y){}protected:void print(){cout《《"x point:"《《x《《endl《《"y point:"《《y《《endl;}private:int x;int y;};class B:public A{public:B(int x,int y,int z):A(x,y),z(z){}void output(){print();cout《《"z point:"《《z《《endl;}//此处调用了基类的protected成员print(),这是合法的。private:int z;};int main(){A a(2,3);B b(4,5,6);//a.print();//这是不合法的,基类对象不能调用保护属性成员//b.print();//不合法b.output(); //调用public成员,合法;该成员函数内部调用了保护成员print()return 0;}

综上:保护成员在对于类对象来说访问权限和私有成员一样,但是对于子类来说,子类能访问基类保护成员,但不能访问基类私有成员。

关于c++protected继承到此分享完毕,希望能帮助到您。

c++protected继承(CPP公有继承、保护继承以及私有继承)

本文编辑:admin

更多文章:


readonly标签(RFID中只读和读写标签有什么区别)

readonly标签(RFID中只读和读写标签有什么区别)

本文目录RFID中只读和读写标签有什么区别input标签中设置readonly属性后光标显示问题如何用Javascript代码控制input标签的readonly或disabled属性RFID中只读和读写标签有什么区别可读写标签,可以在现有

2024年6月1日 01:41

timeout品牌(lvtimeout小白鞋增高几厘米)

timeout品牌(lvtimeout小白鞋增高几厘米)

本文目录lvtimeout小白鞋增高几厘米因以下文件的损坏或丢失 windows无法启动:\system32\hal.dlllvtimeout小白鞋增高几厘米lvtimeout小白鞋是一款由中国品牌lvtimeout推出的男士休闲鞋,它采用

2024年7月22日 09:50

x 11011(设X=11011,Y=10101,对这两个逻辑变量进行“异或”运算的结果是( ))

x 11011(设X=11011,Y=10101,对这两个逻辑变量进行“异或”运算的结果是( ))

本文目录设X=11011,Y=10101,对这两个逻辑变量进行“异或”运算的结果是( )二进制乘法 x=11011,y=10111,求x*y的值,要求写出运算过程,怎么做啊求解已知x=11011,y=00011,用变形补码计算x+y,和x➖

2024年5月16日 18:54

springsecurity获取当前用户(springsecurity在获取受限资源时怎么获得用户的角色信息)

springsecurity获取当前用户(springsecurity在获取受限资源时怎么获得用户的角色信息)

其实springsecurity获取当前用户的问题并不复杂,但是又很多的朋友都不太了解springsecurity在获取受限资源时怎么获得用户的角色信息,因此呢,今天小编就来为大家分享springsecurity获取当前用户的一些知识,希望

2024年7月31日 22:40

editorincharge翻译中文(文字编辑用英语怎么说)

editorincharge翻译中文(文字编辑用英语怎么说)

本文目录文字编辑用英语怎么说Dear Editor  中文翻译文字编辑用英语怎么说Text editor很简单的语法问题嘛.I am a Text editor文字是一个词!所以Editor的E是小写的!李阳说过,只要把世界上最难的中文学会

2024年7月16日 18:51

applications是什么意思(applications opi 什么意思)

applications是什么意思(applications opi 什么意思)

大家好,关于applications是什么意思很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于applications opi 什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站

2024年7月28日 10:00

access做excel数据库(access数据库怎么导入excel数据)

access做excel数据库(access数据库怎么导入excel数据)

本文目录access数据库怎么导入excel数据如何在access中,创建excel转换成数据库的表如何将access中的数据导出为EXCEL文件如何把EXCEL表导入到access数据库如何使用access实现excel功能如何实现Acc

2024年7月3日 22:02

arraylist去除重复元素(如何在List集合中去除重复元素)

arraylist去除重复元素(如何在List集合中去除重复元素)

其实arraylist去除重复元素的问题并不复杂,但是又很多的朋友都不太了解如何在List集合中去除重复元素,因此呢,今天小编就来为大家分享arraylist去除重复元素的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本

2024年7月19日 23:20

中国最新领导班子(中船集团总部领导班子名单)

中国最新领导班子(中船集团总部领导班子名单)

本文目录中船集团总部领导班子名单最新南航领导班子成员名单盐城市领导班子调整了吗六套班子是哪六套怎么理解中国权力更替具有循环特征新领导班子上任表态讲话中国人寿保险老板是谁对话北京现代:中韩全新领导层如何带领品牌破局中船集团总部领导班子名单中船

2024年7月17日 13:55

企业网站内容应该以什么为核心(企业网站建设的栏目设计要注重哪些要点)

企业网站内容应该以什么为核心(企业网站建设的栏目设计要注重哪些要点)

这篇文章给大家聊聊关于企业网站内容应该以什么为核心,以及企业网站建设的栏目设计要注重哪些要点对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录企业网站建设的栏目设计要注重哪些要点企业网站建设的核心重点是什么营销型企业网站的核心是

2024年8月11日 12:26

php服务器环境搭建及配置(云服务器环境要怎么配置)

php服务器环境搭建及配置(云服务器环境要怎么配置)

本文目录云服务器环境要怎么配置如何用Docker搭建自己的PHP开发环境云服务器环境要怎么配置你购买腾讯云服务器的时候,应该已经选择好操作系统的类型了,希望你选择的是 Linux 云服务器。配置服务器环境,我推荐你使用“宝塔Linux面板”

2023年8月2日 16:20

bootcamp翻译(为什么mac版本office word没有翻译功能)

bootcamp翻译(为什么mac版本office word没有翻译功能)

本文目录为什么mac版本office word没有翻译功能安装bootcamp时提示“找不到$winpedriver$文件夹,请验证该文件夹是否和bootcamp处于同一文件夹内”《三角洲4》的一些英文希望英语大侠们帮我翻译一下!希望英语和

2024年7月23日 18:17

multisim蜂鸣器怎么响(如何在multisim10中使用蜂鸣器)

multisim蜂鸣器怎么响(如何在multisim10中使用蜂鸣器)

大家好,multisim蜂鸣器怎么响相信很多的网友都不是很明白,包括如何在multisim10中使用蜂鸣器也是一样,不过没有关系,接下来就来为大家分享关于multisim蜂鸣器怎么响和如何在multisim10中使用蜂鸣器的一些知识点,大家

2024年9月1日 11:05

vba sub什么意思(vba 解释代码的意思)

vba sub什么意思(vba 解释代码的意思)

大家好,如果您还对vba sub什么意思不太了解,没有关系,今天就由本站为大家分享vba sub什么意思的知识,包括vba 解释代码的意思的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录vba 解释代码的意思Exc

2024年8月18日 22:55

printstacktrace 作用(e.printStackTrace() ; 是什么意思)

printstacktrace 作用(e.printStackTrace() ; 是什么意思)

本文目录e.printStackTrace() ; 是什么意思在java程序中 e.printStackTrace()是什么意思有什么作用java e.printStackTrace() 什么意思呢e.printStackTrace() ;

2023年11月3日 14:40

javaee是干什么的(我想知道学完javaEE后能做什么啊,就只能做web开发么,做网站开发和做web有什么不同)

javaee是干什么的(我想知道学完javaEE后能做什么啊,就只能做web开发么,做网站开发和做web有什么不同)

本文目录我想知道学完javaEE后能做什么啊,就只能做web开发么,做网站开发和做web有什么不同JavaEE到底是什么,如何理解我想知道学完javaEE后能做什么啊,就只能做web开发么,做网站开发和做web有什么不同JavaEE开发就是

2024年7月8日 07:45

wpsppt表格样式怎么设置(WPS的PPT中插入表格怎么样更改默认样式用填充换了颜色和边框,但是边框没有显示出来,请问这个怎么弄)

wpsppt表格样式怎么设置(WPS的PPT中插入表格怎么样更改默认样式用填充换了颜色和边框,但是边框没有显示出来,请问这个怎么弄)

本文目录WPS的PPT中插入表格怎么样更改默认样式用填充换了颜色和边框,但是边框没有显示出来,请问这个怎么弄wps表格的格式在哪里设置PPT的表格怎么修改默认样式wps表格样式在哪里设置wpsPPT如何改变表格边框颜色wps ppt演示文稿

2024年7月13日 06:31

buttongroup选择的信息(有关matlab中groupbutton的)

buttongroup选择的信息(有关matlab中groupbutton的)

本文目录有关matlab中groupbutton的java如何用Jradiobutton做一个有选项的button组,然后获取选定的选项是哪个急java里怎么取道ButtonGroup里所选的内容啊判断QButtonGroup中哪个QRad

2024年7月23日 06:52

ui设计师需要会一点代码吗(ui要学代码吗)

ui设计师需要会一点代码吗(ui要学代码吗)

本文目录ui要学代码吗ui设计师需要学习代码吗UI设计师需要懂代码吗ui设计需要学编程吗UI设计需要学哪些东西想转行学做UI设计,想问下UI设计需要会编程吗UI设计需要学什么,学编程吗学习UI设计需要学习编程吗UI设计师需要会代码吗ui设计

2024年6月27日 17:31

button按钮属性(button中type的属性值只能为)

button按钮属性(button中type的属性值只能为)

各位老铁们,大家好,今天由我来为大家分享button按钮属性,以及button中type的属性值只能为的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目

2024年10月8日 09:35

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1735
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1167
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索