Sont multiples, héritée de constructeurs appelé plusieurs fois?

Sont multiples, héritée de constructeurs appelé plusieurs fois? Et dans quel ordre sont les constructeurs appelé? Est-ce à dépendre de l'ordre dans la liste d'héritage?

Voici un exemple (c'est seulement pour rendre la situation claire, aucun exemple réel).

class Base {};
class DerivedBaseOne : public Base {};
class DerivedBaseTwo : public Base {};
class Derived : public DerivedBaseTwo, public DerivedBaseOne 
{};

//somewhere in the code, is Base() called two times here?
Derived * foo = new Derived();

Est le Base() constructeur appelé deux fois? Et dans quel ordre les constructeurs sont appelés? Base en premier? Ou DerivedBaseOne() ou DerivedBaseTwo() premier?

  • Vous pouvez aussi penser à l'héritage virtuel que ce serait un peu différente de la normale à l'héritage.
  • Héritée des constructeurs est une fonction de c++11 et dire complètement autre chose.
  • Connexes: en.wikipedia.org/wiki/Diamond_problem
InformationsquelleAutor blubberbernd | 2011-09-13