一、继承(Inheritance)
C++中的继承(inheritance)是一种很有用的特性,它允许一个类(派生类)继承另一个或多个类(基类)的所有内容,包括数据成员和成员函数(存取权限另当别论)。如果直接继承自一个基类,则称为单一继承;如果直接继承自多个类,则称为多重继承。语法如下(以下是三层单一继承):
然后我们可以这样使用它们:
我们在CPint3d对象中使用继承而来的x()和y()函数,这两个函数将存取继承而来的_x和 _y数据。继承的最大用意,在于表现对象世界中is a kind of(或说is a)的关系。以本例CPoint3d对象为例,其结构示意图如下:
C++语言支持三种继承:
1. 单一继承(single Inheritance):直接基类只有一个。
2. 多重继承(Multiple Inheritance):直接基类不止一个。
3. 虚拟继承(Virtual Inheritance):在多重继承下,让共同的“祖父级”基类对象能够被共享,不至于浪费内存空间。
二、单一继承(single Inheritance)
所谓单一继承,就是每一个类的直接基类只能有一个,继承的层级数目并没有限制。上例的CPoint、CPoint2d、CPoint3d一脉相传就是一种单一继承:
三、多重继承(Multiple Inheritance)
所谓多重继承,就是每一个类的直接基类不止一个,多重继承的语法如下:
四、虚拟继承(Virtual Inheritance)
所谓虚拟继承,就是在类头中,在基类的前方加上virtual关键字,如下所示:
五、继承体系下的对象构造和析构
1. 继承体系下的对象构造顺序是:先内后外,先上后下;
2. 继承体系下的对象析构顺序是:先外后内,先下后上;