多个基类
如多重继承中所述,类可以从多个基类派生。 在多重继承模型中(其中,类派生自多个基类),使用 base-list 语法元素指定基类(请参阅概述中的“语法”一节)。 例如,可以指定派生自 Collection 和 Book 的 CollectionOfBook 的类声明:
// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
// New members
};
指定基类的顺序并不重要,只不过在某些情况下,将调用构造函数和析构函数。 在这些情况下,指定基类的顺序将影响:
构造函数进行初始化的顺序。 如果您的代码依赖要在 Collection 部分之前初始化的 CollectionOfBook 的 Book 部分,则规范的顺序很重要。 按照 base-list 中指定类的顺序执行初始化。
调用析构函数以进行清理的顺序。 同样,如果在销毁另一部分时必须呈现类的特定“部分”,则顺序非常重要。 按照与 base-list 中指定类的顺序相反的顺序调用析构函数。
备注
基类的规范顺序会影响类的内存布局。不要基于内存中基成员的顺序做出任何编程决策。
当指定 base-list 时,不能多次指定同一类名。 但是,可以将类多次作为派生类的间接基。