Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Direkte Basisklassen werden nahezu auf die gleiche Weise wie Memberobjekte initialisiert.Betrachten Sie das folgende Beispiel:
// 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()
{
}
Beachten Sie, dass im Konstruktor für DialogBox, die MyClass Basisklasse initialisiert wird rSizemithilfe des Arguments.Diese Initialisierung besteht aus dem Namen der Basisklasse aufgerufen, um zu initialisieren, gefolgt von einer Liste in Klammern der Argumente an den Konstruktor der Klasse.
In der Initialisierung von Basisklassen, gilt das Objekt, das nicht das darstellende Unterobjekt ist, eine Komponente der Basisklasse als „vollständiges Objekt“. Den vollständigen Objektklasse gilt als „meisten abgeleitete“ - Klasse für das Objekt.
Die Unterobjekte, die virtuelle Basisklasse darstellen, werden vom Konstruktor für die meisten abgeleitete Klasse initialisiert.Das heißt, wo virtuelle Ableitungen angegeben wird, beginnt die meisten abgeleitete Klasse die virtuelle Basisklasse explizit initialisiert werden müssen oder die virtuelle Basisklasse muss über einen Standardkonstruktor verfügen.Initialisierungen für virtuelle Basisklasse, die in den Konstruktoren Klassen außer den meisten abgeleitete Klasse angezeigt werden, werden ignoriert.
Obwohl die Initialisierung von Basisklassen normalerweise für die direkte Basisklasse beschränkt ist, kann ein Klassenkonstruktor eine indirekte virtuellen Basisklasse zu initialisieren.