Condividi tramite


Inizializzare le classi di base

Le classi di base dirette vengono inizializzate in modo molto degli oggetti membro.Si consideri l'esempio seguente:

// 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()
{
}

Si noti che nel costruttore per DialogBox, MyClass la classe base viene inizializzata utilizzando argomento rSize.Questa inizializzazione è costituito dal nome della classe base per l'inizializzazione, seguito da un elenco tra parentesi degli argomenti del costruttore della classe.

Nell'inizializzazione delle classi di base, l'oggetto che non è il sotto-oggetto che rappresenta una parte della classe base viene considerato “completa l'oggetto.„ La classe dell'oggetto completa è considerata la classe “più derivata„ per l'oggetto.

Oggetti secondari che rappresentano classi di base virtuali vengono inizializzati dal costruttore per la classe derivata.Ciò significa che in cui la derivazione virtuale è specificata, la maggior parte della classe derivata deve esplicitamente inizializzare la classe base virtuale, o la classe base virtuale deve disporre di un costruttore predefinito.Le inizializzazioni per le classi di base virtuali che vengono visualizzati nei costruttori per le classi diverse dalla maggior parte della classe derivata vengono ignorate.

Sebbene l'inizializzazione delle classi di base in genere è limitata alle classi di base dirette, il costruttore della classe può inizializzare una classe base virtuale indiretta.

Vedere anche

Riferimenti

Inizializzare le basi e i membri