C++入门:继承全解

来源:互联网 发布:百度地图数据采集 编辑:程序博客网 时间:2024/06/15 02:50

继承基础知识

什么是继承

一个类拥有了另一个类的属性和方法,就是继承

如何继承

如图,Worker 类继承了 Person 类


三种继承方式

公有集成

class A : public B //A 类公有继承了 B 类

理解:B为基类,A为派生类。

B类中的 public 方式成员会以 public 方式继承到 A 类中;

B类中的 protected 方式成员会以 protected 方式继承到 A 类中;

B类中的 private 方式的成员不会被继承到 A 类中。

保护继承

class A : protected B //A 类保护继承了 B 类

私有继承

class A : private B //A 类私有继承了 B 类

继承中的特殊关系

隐藏

当基类和派生类有相同的成员方法时,基类的成员方法会被隐藏。但任然可以调用。

如下例子中当 Solder 继承了 Person 类后,Person中的 display() 方法被隐藏。


Is-A(派生类也是基类)

派生类也是基类,拿如下例子理解,士兵也是人。


Is-A使用

这里比较抽象,主要应用在把类当成参数使用时,派生类都是基类,那就是可以把派生类当成基类 类型的参数进行传递。如下图:


多继承与多重继承

多继承的定义


多继承的实现

多重继承的定义


多重继承的实现


虚继承

为什么使用虚继承


在上图的例子中, D 类多继承于 B 类和 C 类, B 类和 C 类又各自继承于 A 类。最后效果就是 D 类继承了两次 A 类,

这种继承模式叫做菱形继承,如果出现菱形继承,计算机就会报错。使用虚继承就是为了避免这一错误。

如何使用虚继承

让 B 类和 C 类虚继承 A 类,就会避免菱形继承出错。