c++protected继承(CPP公有继承、保护继承以及私有继承)
本文目录
- CPP公有继承、保护继承以及私有继承
- c++继承是如何工作的
- c++protected是什么意思
- C++中,类的protected究竟有什么作用
- c++类中的protected什么时候用
- C++中,类的继承有哪些类型,其之间有什么区别
- C++继承的继承方式
- C++中,基类protected能给子类直接调用
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;}
综上:保护成员在对于类对象来说访问权限和私有成员一样,但是对于子类来说,子类能访问基类保护成员,但不能访问基类私有成员。
更多文章:
x 11011(设X=11011,Y=10101,对这两个逻辑变量进行“异或”运算的结果是( ))
2024年5月16日 18:54
springsecurity获取当前用户(springsecurity在获取受限资源时怎么获得用户的角色信息)
2024年7月31日 22:40
editorincharge翻译中文(文字编辑用英语怎么说)
2024年7月16日 18:51
applications是什么意思(applications opi 什么意思)
2024年7月28日 10:00
access做excel数据库(access数据库怎么导入excel数据)
2024年7月3日 22:02
arraylist去除重复元素(如何在List集合中去除重复元素)
2024年7月19日 23:20
企业网站内容应该以什么为核心(企业网站建设的栏目设计要注重哪些要点)
2024年8月11日 12:26
bootcamp翻译(为什么mac版本office word没有翻译功能)
2024年7月23日 18:17
multisim蜂鸣器怎么响(如何在multisim10中使用蜂鸣器)
2024年9月1日 11:05
printstacktrace 作用(e.printStackTrace() ; 是什么意思)
2023年11月3日 14:40
javaee是干什么的(我想知道学完javaEE后能做什么啊,就只能做web开发么,做网站开发和做web有什么不同)
2024年7月8日 07:45
wpsppt表格样式怎么设置(WPS的PPT中插入表格怎么样更改默认样式用填充换了颜色和边框,但是边框没有显示出来,请问这个怎么弄)
2024年7月13日 06:31
buttongroup选择的信息(有关matlab中groupbutton的)
2024年7月23日 06:52
button按钮属性(button中type的属性值只能为)
2024年10月8日 09:35