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 : Sélectionner tout - Visualiser dans une fenêtre à part
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