Héritage en C++
Résolu/Fermé
alexireynouar
-
3 août 2013 à 16:00
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 10 août 2013 à 13:09
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 10 août 2013 à 13:09
A voir également:
- Formate de bara héritage
- Formate de bara police interpol ✓ - Forum Vos droits sur internet
- Formate pour taxer client sur nourriture - Forum Loisirs / Divertissements
- Lien de rajout pour bara facebook - Forum Webmastering
- Formate pour taxer client 500€ - Forum Vos droits sur internet
- Formate pour taxer connexion internet ✓ - Forum Matériel & Système
1 réponse
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
10 août 2013 à 13:09
10 août 2013 à 13:09
La manière la plus simple de vérifier, c'est d'écrire quelque chose dans le constructeur de la classe mère, et tu verras bien s'il est invoqué ou non.
Le risque de ne pas surcharger, c'est que certains membres de ta classe ne soient pas initialisé si le constructeur de la classe mère n'est pas invoqué (plus précisément, les membres de classe hérités de la classe mère).
A priori si tu ne mentionnes pas le constructeur de la classe mère, c'est son constructeur par défaut qui est invoqué. Du coup tu deviens dépendant de son implémentation au niveau de ta classe fille. À toi de voir au niveau de ton code si ça a du sens.
Exemple :
... donne :
Comme on le voit ici, le constructeur b_t::b_t(int) a invoqué a_t::a_t().
Bonne chance
Le risque de ne pas surcharger, c'est que certains membres de ta classe ne soient pas initialisé si le constructeur de la classe mère n'est pas invoqué (plus précisément, les membres de classe hérités de la classe mère).
A priori si tu ne mentionnes pas le constructeur de la classe mère, c'est son constructeur par défaut qui est invoqué. Du coup tu deviens dépendant de son implémentation au niveau de ta classe fille. À toi de voir au niveau de ton code si ça a du sens.
Exemple :
#include <iostream> class a_t { public: int x; a_t() : x(7){} a_t(int x0) : x(x0){} }; class b_t : public a_t { public: int y; b_t(int y0) : y(y0) {} }; int main() { b_t b(5); std::cout << b.x << ' ' << b.y << std::endl; return 0; }
... donne :
(mando@silk) (~) $ g++ toto.cpp (mando@silk) (~) $ ./a.out 7 5
Comme on le voit ici, le constructeur b_t::b_t(int) a invoqué a_t::a_t().
Bonne chance