eupeup
Messages postés57Date d'inscriptionmardi 11 mars 2003StatutMembreDernière intervention24 avril 2013
-
2 août 2010 à 15:10
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
2 août 2010 à 18:31
Bonjour à tous!!!!
J'ai une petite question, et si quelqu'un pouvait m'aider, ce serait sympa...
Donc ca concerne la définition d'un opérateur de copie dans une classe d'objet...
Si ma classe contient un pointeur, doit-on dans l'opérateur de copie passer le pointeur via le signe = (mais du coup l'adresse sera la même), ou alors re-allouer de la mémoire avec un new et transmettre la valeur de mon pointeur par la suite?
Question bête, y a-t-il une règle ou ca dépend bêtement de ce que l'on veut faire?
Et petite question supplémentaire, est-il indispensable de coder systématiquement cet opérateur de copie,de même y a-t-il une règle?
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 2 août 2010 à 18:31
Si ma classe contient un pointeur, doit-on dans l'opérateur de copie passer le pointeur via le signe = (mais du coup l'adresse sera la même), ou alors re-allouer de la mémoire avec un new et transmettre la valeur de mon pointeur par la suite?
La plupart du temps, tu voudras sûrement faire une copie.
Question bête, y a-t-il une règle ou ca dépend bêtement de ce que l'on veut faire?
Ça dépend bêtement de ce que tu veux faire.
Néanmoins, ce problème peut être aisément réglé avec des smart pointers. Des "shared pointers" par exemple. Qui peuvent être supprimés autant de fois que l'on veut, puisqu'ils ne disparaîtront qu'une fois nécessaire.
Et petite question supplémentaire, est-il indispensable de coder systématiquement cet opérateur de copie,
Oui, il est indispensable, non pas de le faire, mais de le gérer: Soit tu le désactives, soit tu le recodes.
Oubliez de le faire, c'est une grossière erreur qui mènent à un code passoir (bug, memory leak, difficultés de maintenance, ...).
de même y a-t-il une règle?
Oui. Si tu as des pointeurs en attribut de ta classe, tu dois gérer la copie. Sinon, ce n'est pas nécessaire.
________________________________________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question