直接基类与成员对象类似的方式初始化。请看下面的示例:
// spec1_initializing_base_classes.cpp
// Declare class MyClass.
class MyClass
{
public:
MyClass( int rSize )
{
}
};
// Declare class DialogBox, derived from class MyClass
class DialogBox : public MyClass
{
public:
DialogBox( int rSize );
};
// Define the constructor for DialogBox. This constructor
// explicitly initializes the MyClass subobject.
DialogBox::DialogBox( int rSize ) : MyClass( rSize )
{
}
int main()
{
}
请注意使用参数 rSize,在 DialogBox的构造函数, MyClass 初始化基类。此初始化包括基类的名称初始化,后跟括号将参数列表给类的构造函数。
在基类中初始化,而不是表示的 subobject 的对象基类的组件叫做 “整个对象”。整个对象类被视为对象的 “大多数派生的”类。
表示虚拟基类的子该派生类的构造函数初始化。这意味着位置虚拟派生指定,派生类必须显式初始化虚拟基类,或虚拟基类必须具有默认构造函数。出现在类的构造函数而不是派生类之外的虚拟基类的初始化被忽略。
虽然基类的初始化通常是处理限制基类,类构造函数中初始化间接虚拟基类。