初始化基底類別
直接基底類別中相同方式做為成員物件初始化。 參考下列範例:
// 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()
{
}
請注意,在建構函式DialogBox、 MyClass基底類別會使用引數來初始化rSize。 此初始設定名稱所組成的基底類別初始化,後面跟著該類別的建構函式引數清單括號。
初始化基底類別,並不代表基底類別的元件的子物件的物件會被視為 「 完整物件 」。 完整的物件類別就視為物件的 「 最具衍生性 」 類別。
表示虛擬基底類別的子物件會以最高衍生類別的建構函式初始化。 這表示而指定虛擬的衍生,最高衍生的類別必須明確初始化虛擬基底類別,或虛擬基底類別必須具有預設建構函式。 會出現在類別以外的最高衍生類別的建構函式的虛擬基底類別的初始設定會被忽略。
雖然通常受限於直接基底類別的基底類別初始設定,但是類別建構函式可以初始化間接的虛擬基底類別。