constructeur de copie OR operator= ?
Mon problème est simple, dans le code ci dessous, je ne comprends pas pourquoi à la ligne indiquée dans main, le constructeur de copie est appelé plutôt que la méthode 'operator=' de la classe ...
1 - Le constructeur de copie est censé n'intervenir qu'en cas de d'initialisation d'un objet : alors pourquoi b est concidéré non initialisé ?
( il est déclaré à la ligne du dessus, donc un constructeur par defaut a déjà fait le boulo non ?)
2 - Enfin, que faudrait il pour que la méthode operator= soit appelée à cet endroit plutôt que le constructeur de copie ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #include <iostream>
using namespace std;
class point
{ int x, y;
public :
point (int abs=0,int ord=0){
x=abs;
y=ord;
}
point (const point &p){
x=p.x;
y=p.y;
}
~point(){}
point operator=(const point &p);
point symetrique();
}
point point::symetrique(){
point res;
res.x = -x; res.y = -y;
return res;
}
point operator=(const point &p){
x=p.x;
y=p.y;
return *this;
}
int main(){
point a(1,3), b;
b = a.symetrique(); // <------ICI
return 0;
} |
Merci d'avance :D