Várias Classes Base
Conforme descrito em Herança múltipla, uma classe pode ser derivada de mais de uma classe base.Em um modelo de herança múltipla (onde as classes são derivadas de mais de uma classe base), as classes base são especificadas usando o lista da base de elemento grammar (consulte a seção de gramática em Visão geral).Por exemplo, a declaração de classe para CollectionOfBook, derivada de Collection e Book, pode ser especificado:
// deriv_MultipleBaseClasses.cpp
// compile with: /LD
class Collection {
};
class Book {};
class CollectionOfBook : public Book, public Collection {
// New members
};
A ordem em que as classes base são especificados não é significativa, exceto em determinados casos em que os construtores e destrutores são invocados.Nesses casos, a ordem em que as classes base são especificados afeta o seguinte:
A ordem na qual a inicialização pelo construtor acontece.Se seu código depende do Book parte do CollectionOfBook ser inicializados antes do Collection parte, a ordem da especificação é significativa.A inicialização ocorre na ordem em que as classes são especificadas no lista da base de.
A ordem na qual os destruidores são invocados para limpar.Novamente, se uma determinada "parte" da classe deve estar presente quando a outra parte está sendo destruída, a ordem é importante.Destruidores são chamados na ordem inversa das classes especificadas no lista da base de.
Observação A ordem da especificação de classes base pode afetar o layout da memória da classe.Não faça quaisquer decisões de programação com base na ordem de membros de base na memória.
Ao especificar o lista da base de, você não é possível especificar mais de uma vez o mesmo nome de classe.No entanto, é possível que uma classe seja uma base indireta para uma classe derivada de mais de uma vez.