初始化的基类

直接基类与成员对象类似的方式初始化。请看下面的示例:

// 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 的对象基类的组件叫做 “整个对象”。整个对象类被视为对象的 “大多数派生的”类。

表示虚拟基类的子该派生类的构造函数初始化。这意味着位置虚拟派生指定,派生类必须显式初始化虚拟基类,或虚拟基类必须具有默认构造函数。出现在类的构造函数而不是派生类之外的虚拟基类的初始化被忽略。

虽然基类的初始化通常是处理限制基类,类构造函数中初始化间接虚拟基类。

请参见

参考

初始化的基础和成员