1.可以从多个基类中派生出一个新类。这就叫做多重继承。如:
class newClass:public class1,public class2
{};
2.在内存中创建newClass的对象时,两个基类形成newClass对象的组成部分。
3.多重继承对象中的构造函数。若每个基类都有带参数的构造函数,那么newClass将依次初始化这些构造函数。
4.虚继承。如:
class newClass:virtual public baseClass
通常一个类的构造函数只初始化自己的成员变量和基类。而虚继承的基类则是一个例外,它由派生性最强的类初始化。
为了确保派生类只有一个公共基类的一个实例,把中间类声明为从基类的虚基类。因此虚继承适用于新类的多个基类的基类是同一个类的情况。
5.当一个新类需要从多个基类中继承函数和特征时必须用多重继承。
当派生性最强的类必须只有共享基类的一个实例时必须用虚继承。
6.一个抽象数据类型是一个概念,而不是一个对象。在C++中一个ADT总是其他类的基类,生成ADT的实例是非法的。
C++支持用纯虚函数来创建抽象数据类型。一个虚函数通过初始化为0就变成了纯虚函数。如:
virtual void Draw()=0;
任何带有一个或多个纯虚函数的类就叫做ADT。对于带有纯虚函数的类,其派生类必须覆盖纯虚函数。否则,它的派生类也是ADT,也不能实例化。
然而也可以给纯虚函数提供实现代码,然后这个函数可以被由ADT派生的对象所调用,这样做可能是为了给所覆盖的函数提供公共功能。
评论