Inicializando Classes Base
Classes base diretas são inicializados da mesma forma como os objetos de membro.Considere o exemplo a seguir:
// 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()
{
}
Observe que no construtor para DialogBox, o MyClass classe base é inicializado usando o argumento rSize.Essa inicialização consiste no nome da classe base para inicializar, seguido de uma lista de argumentos com parênteses para o construtor da classe.
Inicialização de classes base, o objeto que não seja o objetos filho específicos que representa o componente da classe de base é considerado um "objeto completo". Classe do objeto completo é considerado "mais derivados" da classe do objeto.
Os subobjetos representando classes base virtuais são inicializados pelo construtor da classe mais derivado.Isso significa que onde derivação virtual for especificada, a classe derivada mais explicitamente deve inicializar a classe base virtual ou a classe base virtual deve ter um construtor padrão.Inicializações de classes base virtuais que aparecem em construtores de classes diferentes de uma classe derivada mais são ignoradas.
Embora a inicialização de classes base normalmente é restrita para direcionar as classes base, um construtor de classe pode inicializar uma classe de base virtual indireta.