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 ?
Merci d'avance
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; }
Partager