Constructeur par copie classe hereditaire
Résolu
OtaksMaster
Messages postés
22
Statut
Membre
-
Sugel Messages postés 4859 Statut Membre -
Sugel Messages postés 4859 Statut Membre -
Bonjour,
je me demandais juste si mettons, j'ai une classe : C et une classe héréditaire de C : HC
si j'utilise le constructeur par copie pour créer une instance de C avec en paramètre une instance de HC est-ce-que l'instance créée sera une instance de HC ou de C ???
Help please.
je me demandais juste si mettons, j'ai une classe : C et une classe héréditaire de C : HC
si j'utilise le constructeur par copie pour créer une instance de C avec en paramètre une instance de HC est-ce-que l'instance créée sera une instance de HC ou de C ???
Help please.
A voir également:
- Constructeur par copie classe hereditaire
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
1 réponse
Ce n'est pas pour rien que les constructeurs ne sont pas héritables :
Ta classe a beau être dérivée d'une autre, elle comporte pourtant un contenu différent !
Ainsi, utiliser un constructeur de copie sur une structure d'une taille différente risque de causer des erreurs et un plantage potentiel
(plus de données ajoutées à la stack que retirées, création d'un décalage).
Mais avant tout, tu risque de ne pas y arriver :
le compilateur t'insultera assez copieusement pour que tu n'y parvienne pas ;-)
Ces problèmes peuvent être surmontés dans des conditions bien particulières, qui sont dépendantes de l'implémentation. Il serait ainsi bien malvenu de compter dessus !
En plus, utiliser un constructeur non adapté peut laisser des champs non initialisés.
Enfin, pour répondre à ta question, si le compilateur ne t'insultait pas, il créerai en toute logique une instance de C, vu que c'est ce que tu lui demande.
DISCLAIMER : Je ne code pas en C++ de manière régulière, mais j'ai de bonnes bases et des connaissances de bas niveau. Ma réponse peut être inexacte dans le sens qu'il se peut que il soit prévu un tel cas dans les spécifications C++, et que cette opération soit légale en dépit du bon sens.
Ta classe a beau être dérivée d'une autre, elle comporte pourtant un contenu différent !
Ainsi, utiliser un constructeur de copie sur une structure d'une taille différente risque de causer des erreurs et un plantage potentiel
(plus de données ajoutées à la stack que retirées, création d'un décalage).
Mais avant tout, tu risque de ne pas y arriver :
le compilateur t'insultera assez copieusement pour que tu n'y parvienne pas ;-)
Ces problèmes peuvent être surmontés dans des conditions bien particulières, qui sont dépendantes de l'implémentation. Il serait ainsi bien malvenu de compter dessus !
En plus, utiliser un constructeur non adapté peut laisser des champs non initialisés.
Enfin, pour répondre à ta question, si le compilateur ne t'insultait pas, il créerai en toute logique une instance de C, vu que c'est ce que tu lui demande.
DISCLAIMER : Je ne code pas en C++ de manière régulière, mais j'ai de bonnes bases et des connaissances de bas niveau. Ma réponse peut être inexacte dans le sens qu'il se peut que il soit prévu un tel cas dans les spécifications C++, et que cette opération soit légale en dépit du bon sens.