Opérateur de copie et pointeur

Signaler
Messages postés
57
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
24 avril 2013
-
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
-
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?

1 réponse

Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
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