Les constructeurs ne sont jamais hérités, pour une raison simple (syntaxe approximative) :
Code :
- class A {
- private :
- int ma;
- public :
- A():ma(10) {};
- }
- class B : A {
- private :
- Zorglub &mb;
- }
|
maintenant, si B héritait du constructeur de A, que vaudrait mb après construction ? il n'a pas le droit d'être nul (donc une valeur par défaut n'existe intrinsèquement pas), et il n'a pas été défini.
De même, pour les types pour lesquels une valeur par défaut existe intrinsèquement, il n'y a aucune raison qu'elle soit valide dans l'objet (style un int qiu va se retrouver sous une fraction, on a jamais intérêt à avoir zéro dedans), donc on ne doit pas lui donner dans le dos de l'utilisateur.
donc les langages à la C++ (C++, java, C# au moins) n'héritent jamais des constructeurs.
Message édité par nraynaud le 23-04-2004 à 03:20:03
---------------
trainoo.com, c'est fini