Compartir a través de


Varias clases base

Como se describe en herencia múltiple, una clase puede estar derivada de más de una clase base.En un modelo de herencia múltiple (donde derivadas las clases de más de una clase base), las clases base se especifican mediante el elemento de la gramática de la base-lista (vea la sección de la gramática de información general).Por ejemplo, la declaración de clase para CollectionOfBook, las derivadas de Collection y de Book, pueden especificar:

// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
    // New members
};

El orden en que se especifican las clases base no es significativo salvo en algunos casos en que se invocan los constructores y destructores.En estos casos, el orden en que se especifican las clases base afecta a la siguiente:

  • El orden en que la inicialización del constructor tiene lugar.Si el código depende de la parte de Book de CollectionOfBook que inicializará antes de la parte de Collection , el orden de la especificación es significativa.Inicialización tiene lugar en el orden en que las clases se especifican en la base-lista.

  • El orden en que los destructores se invocan para limpiar.Una vez más si una “parte determinada” de la clase debe estar presente cuando se está destruyendo otra parte, el orden es importante.los destructores se denominan en el orden inverso de las clases especificadas en la base- lista.

    [!NOTA]

    El orden de la especificación de clases base puede afectar al diseño de memoria de la clase.No tomen decisiones de programación basada en el orden de los miembros base en memoria.

Al especificar la base-lista, no puede especificar el mismo nombre de clase más de una vez.sin embargo, es posible que una clase sea una base indirecta a una clase derivada más de una vez.

Vea también

Referencia

Clases derivadas