problème constructeur + héritage
Bonjour
Je suis débutant en c++, je travaille sur les constructeurs. Je souhaiterai appeler le constructeur de la classe Mere, pour initialiser le constructeur de la class Fille. La class Mere à deux paramètres _nb1 et _nb2 et la classe Fille n'a que _nb3.
Je voudrais savoir si c'est possible d'appeler le constructeur de la classe Mere pour récupérer l'initialisation de la classe Mere, et initialiser le paramètre en plus de la class Fille.
Donc ça donnerai par exemple
Code:
1 2 3
| Mere m1(32,44);
Fille f1(5) |
Admettont que j'ai aussi une fonction affiche dans la classe Fille
Est donc moi j'aimerai obtenir le résultat suivant :
32, 44 ,5
Car ça marche, j'appel bien le constructeur de la class Mere mais seulement je récupère les valeurs par défaut de _nb1 et _nb2 et donc j'obtient cela :
0,0,5
Est ce quelqu'un peut m'aider voici mon code ---------------------
Il est pas très long, il y a deux class (Mere et fille) et dans c'est deux classe il y a les constreurs et la fonction affich()
Merci, d'avance pour votre aide
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include <iostream>
#include <conio.h>
using namespace std;
// Class Mere
class Mere
{
protected:
int _nb1;
int _nb2;
public:
Mere(int nb1 = 0, int nb2 = 0){_nb1 = nb1; _nb2 = nb2;}
void affiche() const;
};
// class Fille
class Fille : public Mere
{
int _nb3;
public:
// Constructeur par défaut
Fille (int nb3 = 0) {_nb3 = nb3;}
// Deuxième constructeur
Fille(int nb3, int nb1, int nb2 );
void affiche() const;
};
void Mere::affiche() const
{
cout << "Nombre 1 :" << _nb1 << endl
<< "Nombre 2 : " << _nb2 <<endl;
}
Fille :: Fille (int nb3, int nb1,int nb2) : Mere(nb1,nb2)
{
_nb3 = nb3;
_nb1 = nb1;
_nb2 = nb2;
}
void Fille::affiche() const
{
cout << "Nombre 3 : " <<_nb3 << endl
<< "Nombre 1 :" << _nb1 << endl
<< "Nombre 2 : " << _nb2 <<endl;
}
int main()
{
Mere m1(32,44);
m1.affiche();
Fille f1(5);
f1.affiche();
getch();
return 0;
} |
Re: problème constructeur + héritage
cf. page cours C++ de Developpez.com et FAQ :arrow: chercher "liste d'initialisation"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include <iostream>
using namespace std;
class Mere
{
protected:
int _nb1;
int _nb2;
public:
Mere(int nb1 = 0, int nb2 = 0) : _nb1(nb1), _nb2(nb2) {}
virtual void affiche() const;
};
class Fille : public Mere
{
int _nb3;
public:
Fille (int nb3 = 0) : Mere(), _nb3(nb3) {}
Fille(int nb1, int nb2,int nb3) : Mere(nb1,nb2),_nb3(nb3) {}
void affiche() const;
};
void Mere::affiche() const
{
cout << "Nombre 1 :" << _nb1 << endl;
cout << "Nombre 2 : " << _nb2 <<endl;
}
void Fille::affiche() const
{
Mere::affiche();
cout << "Nombre 3 : " <<_nb3 << endl;
}
int main(int argc,char* argv[])
{
Fille f(1,2,3);
f.affiche();
return 0;
} |