quelqu'un pourrait-il m'exliquer comment ça se passe lors de l'utilisation du '=' en c++.
Je sais que lorsqu'on surcharge le egale le constructeur par recopie est appellé mais ou intervient'il ?
Si on crait un main comme le suivant
main(){A* E1;
A E2;
E1 = new A();
E1.SetNom("Mon objet A");
E2 = *E1;
cout << E2.GetNom() << endl;
return EXIT-SUCCESS;
}
Le resultat de l'exemple précédent donne
on est passer dans la surcharge du =
on est passer par le recopieur
Mon Objet A
Or le code est fait de tel façon que normalement si on passe dans le recopieur on supprime la liste d'element. Mais la, bizarrement la liste d'element qui devrait etre supprimer y est encore puisque on a put lire le Nom du premiere element.
Si queqlu'un peut me renseigner ...
merci a vous !!!
Bebert37
voici le code source :
class A{
protected :
list<Element> E;
public:
A();
~A();
A(const A& o);
A operator(const A& o);
};A::A(const A& o){
E.erase();
cout << "on est passer par le recopieur" << endl;
}
A A::operator=(const A& o){
E = o.E
cout << "on est passer dans la surcharge du =" << endl;
return *this;
} // retourne le nom du premier element
char* A::GetNom(){ list<Element>::iterator p;
p = E.begin();
// retourne le nom de l'element
return p->RetNom();
}