直接基本クラス メンバーはオブジェクトと同様に初期化します。次に例を示します。
// 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 引数を使用して初期化することに注意してください。この初期化はクラスのコンストラクターに引数リストのかっこで囲んだに続いて基本クラスの名前で初期化するために構成されます。
基本クラスの初期化ではサブ表すオブジェクトではないオブジェクトはクラスのコンポーネント ベースと見なされます 「」を完了するオブジェクト。完全なオブジェクトのクラスはオブジェクトの 「」最派生クラスと見なされます。
仮想基本クラスを表すサブオブジェクトには最派生クラスのコンストラクターで初期化されます。これは仮想派生が指定されている場所は最派生クラスが明示的に仮想基本クラスを初期化する仮想基本クラスが既定のコンストラクターを持つ必要があることを意味します。ほとんどの派生クラス以外のクラスのコンストラクターに表示される仮想基本クラスの初期化は無視されます。
基本クラスの初期化は通常直接基本クラスに制限されていますがクラス コンストラクターは間接仮想基本クラスを初期化できます。