C++继承关系

继承和派生概述:

继承和派生是同一个过程从不同角的度看

保持已有类的特性而构造新类的过程称为继承。

在已有类的基础上新增自己的特性而产生新类的过程称为派生。

被继承的已有类称为基类(或父类)。

派生出的新类称为派生类(或子类)。

直接参与派生出某类的基类称为直接基类。

基类的基类甚至更高层的基类称为间接基类。

 

派生的目的

当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。

 C++继承关系

 

 

 C++继承关系

派生类的构成:

吸收基类成员

改造基类成员

添加新的成员

吸收基类成员:

默认情况下派生类包含了全部基类中除构造和析构函数之外的所有成员。

c++11规定可以用using语句继承基类构造函数。

改造基类成员:

如果派生类声明一个和某基类成员同名的新成员,派生的新成员就隐藏或覆盖了外层同名成员。

添加新的成员:

派生类增加新成员使派生类在功能上有所发展。

 

继承方式

不同继承方式的影响主要体现在:

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

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

 

三种继承方式:

公有继承

私有继承

保护继承

 

公有继承(public):

继承的访问控制

基类的public和protected成员:访问属性在派生类中保持不变;

基类的private成员:不可直接访问。

访问权限

派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;

通过派生类的对象:只能访问public成员。

举例:

定义一个点类(Point)

 C++继承关系

 

 

定义一个矩形类(Rectangle)

 C++继承关系

 

 C++继承关系

 

 

 

 

私有继承(private)

继承的访问控制:

基类的public和protected成员:都以private身份出现在派生类中;

基类的private成员:不可直接访问。

访问权限:

派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;

通过派生类的对象:不能直接访问从基类继承的任何成员。

举例

 C++继承关系

 

 C++继承关系

 

 

 C++继承关系

 

 C++继承关系

 

 

保护继承(protected)

继承的访问控制

基类的public和protected成员:都以protected身份出现在派生类中

基类的private成员:不可直接访问。

访问权限

派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;

通过派生类的对象:不能直接访问从基类继承的任何成员。

 

protected成员的特点与作用

对建立所在类对象的模块来说,它与private成员的性质相同。

对于其派生类来说,它与public成员的性质相同。

既实现了数据隐藏,有方便继承,实现代码重用。

 C++继承关系

 

 

 

 

多继承举例

 C++继承关系

 

 C++继承关系

 

 

 

 

//公有继承                      对象访问    成员访问

public    -->  public              Y         Y

protected -->  protected     N         Y

private   -->  private             N         N

 

//保护继承                      对象访问    成员访问

public    -->  protected           N         Y

protected -->  protected        N         Y

private   -->  private              N         N

 

//私有继承                      对象访问    成员访问

public    -->  private             N         Y

protected -->  private          N         Y

private   -->  private             N         N
————————————————
版权声明:本文为CSDN博主「Vinsmoke -Hou」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/one_super_dreamer/article/details/81611118

原文链接: https://www.cnblogs.com/sggggr/p/12665093.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++继承关系

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/340837

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午12:48
下一篇 2023年3月2日 上午12:48

相关推荐