Constructeur par copie / surcharge de l'operateur =

tanguy_laverdure Messages postés 34 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 12 mai 2004 - 23 févr. 2004 à 15:48
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 23 févr. 2004 à 19:49
Quelqu'un pourrait il me dire la difference entre le Constructeur par copie et la surcharge de l'operateur = ?

Pour par part, j'ai un Objet CSolution je souhaiterai copier une instance de cet objet mais pouvoir modifier la premiere ou la deuxieme instance sans que l'autre ne soit affectée. J'aimerai que toutes les donne membres aient leur propre emplacement memoire de reserver (meme pour la liste de pointeurs sur CTournee). En fait je ne crois pas vouloir faire une copie bit a bit.

Avez-vous une explication et un exemple ?
Merci

class CSolution
{
public:
CSolution();
virtual ~CSolution();
private:
std::vector<CTournee*> _ListeTournees;

long double _dDistance;
long double _dCharge;

int _iIndexSolution;
}

3 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 févr. 2004 à 18:57
la diference c'est que le constructeur par copie construit l'objet (cree une hinstance)

struct A { int n; };

A a1;

a1.n=2;

// appel du constructeur
// par copie
A a2(a1);

// appel du constructeur
// puis de l'operateur =
A a3=a1;
0
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
23 févr. 2004 à 19:06
A a3 = a1;
// appel du constructeur par copie aussi.
// la différence avec le premier cas, c'est la notion
// d'explicit

A a3;
a3 = a1; // opérateur d'affectation
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
23 févr. 2004 à 19:49
ok, ca appel aussi le constructeur par copie (je savais pas)
0
Rejoignez-nous