Constructeur herité implicite

Résolu
Signaler
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
-
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
-
salut a tous, j'ai une question toute bete : est il possible d'appeler implicitement un constructeur d'une class mere?

j'ai 3 niveaux de classes; et je voudrais declarer le constructeur seulement dans la classe de plus haut niveau. Ca me donnerait :

class C1 {
public:
    int m_x;
    C1(int x) { m_x = x); }
};

class C2: public C1 {};

class C3: public C2{};

C3* mon_c3;
mon_c3 = new C3(5); // erreur : le constructeur C3(int) n'est pas déclaré !!!

est il possible que le compilateur lie directement le constructeur de C1 sans que j'ai à declarer
    C2(int x) : C1(x) {};
et
    C3(int x) : C2(x) {};

?

merci

4 réponses

Messages postés
700
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
non, c'est pas possible
le seul constructeur appelé implicitement c'est celui qui n'a pas de parametres
a+
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Oui.
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
donc ca veut dire que, par contre, je peu faire ca :

class C1 {
public:
    int m_x;
    C1() { m_x = 5; }
};

class C2: public C1 {};

class C3: public C2{};

C3* mon_c3;
mon_c3 = new C3();

et il me mettra automatiquerment m_x à 5 ?
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
merci