Constructeur par copie / surcharge de l'operateur =

Signaler
Messages postés
34
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
12 mai 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
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

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
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;
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
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
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
ok, ca appel aussi le constructeur par copie (je savais pas)