Inicializace základní třídy
Přímá základní třídy jsou inicializovány mnohem stejným způsobem jako členské objekty.Příklad:
// 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()
{
}
Všimněte si, že v konstruktoru pro DialogBox, MyClass základní třídy je inicializována pomocí argumentu rSize.Tento inicializace obsahuje název základní třídy inicializace, následuje seznam v závorce argumenty konstruktoru třídy.
Inicializace základní třídy objektu, který není určitých podřízených objektů představující součást základní třídy je považován za "celý objekt." Celý objekt třídy je považován za "nejvíce odvozené" třídy objektu.
Podřízeným objektům, představující virtuální základní třídy jsou iniciovány konstruktor pro většinu odvozené třídy.Znamená, že kde je určen virtuální odvození, většina odvozené třídy musíte explicitně inicializovat virtuální základní třídy nebo virtuální základní třídy musí mít výchozí konstruktor.Inicializace pro virtuální základní třídy, které se zobrazují v konstruktory tříd než většina odvozené třídy jsou ignorovány.
Inicializace základní třídy je obvykle omezena na přímé základní třídy, konstruktoru třídy můžete inicializovat nepřímé virtuální základní třídy.