327Fermer329
azeLe 16/01/2010 à 18:00
cross, vous avez tous répondu grin
Sasume (./319) :
Folco (./317) :
Si on a une classe MaClasse et une instance MonObjet de cette classe, alors :
MaClasse MonObjet_2 = Mon_Objet;appellera le constructeur de copie si celui-ci est défini ?
Oui.

Et s'il n'est pas défini, c'est le constructeur de copie par défaut qui sera appelé, qui appelle lui-même le constructeur de copie de chacun des membres de ta classe. En gros c'est une copie bit à bit sauf si tu définis ton propre constructeur de copie.

Je ne sais pas trop s'il y a un cas où le compilateur peut appeler le constructeur sans paramètres puis l'opérateur =, mais je pense pas
GoldenCrystal (./321) :
C'est sur pour le cas des valeur de retour ? Normalement ça doit pas *systématiquement* provoquer de recopie non ? confus

non, c'est pas systématique, le compilateur peut optimiser en filant à la fonction qui renvoit par valeur l'adresse mémoire où la fonction devra créer son objet. cette adresse pointera dans la pile de la fonction appelante par exemple
plus de détails : http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.9