2013-07-05 3 views
-4

Si je comprends bien, le constructeur de la classe de base est toujours appelé avec la création d'un objet de la classe dérivée. Existe-t-il un moyen d'appeler un constructeur de classe de base surchargé lors de la création de l'objet dérivé?Appel du constructeur de base surchargé de la classe dérivée

+6

Connaissez-vous des listes de initialisation du constructeur à tous? –

+5

Utiliser les listes d'initialisation de constator –

+0

Alok: Pas vraiment dupe. Cette question demande "comment puis-je faire X", et la réponse est "utiliser Y". Cette question demande "Qu'est-ce que Y" mais ne précise pas comment elle résout X. La lecture de la question liée peut seulement servir à confondre, pas clarifier, jusqu'à ce que l'OP sache ce que Y est. –

Répondre

5

Oui, via une liste d'initialisation:

class Base 
{ 
public: 
    Base (int n) : mN(n) {} 
private: 
    int mN; 
}; 

class Derived : public Base 
{ 
public: 
    Derived() : Base (42) {}; 
     // ^^^^^^^^^^^  
     // Initialization List 
}; 

Pour en savoir plus sur la syntaxe de la liste d'initialisation, reportez-vous cette question:

What is this weird colon-member (" : ") syntax in the constructor?

+0

Merci. Je n'étais pas familier avec ça. – user2079828

+0

Notez que ce n'est pas comme en C#, où Base est ce que vous devez écrire là (exactement cela). Base serait le nom de la classe de base. – darkgaze

Questions connexes