PDA

Visualizza la versione completa : [C++] Domanda sull'operatore di assegnamento (assegnazione)


giuseppe96
16-01-2017, 21:40
Ciao a tutti, ho una domanda da chiedervi, sono nuovo della programmazione in C++ (e anche in altri linguaggi), ultimamente mentre studiavo mi è sorto questo dubbio:

Perché l'operatore di assegnamento restituisce un indirizzo?



class x{
int a;
int b;
X& operator=(const X &);
};
//...

X& X::operator=(const X & o){
a=o.a;
b=o.b;
return *this;
}


non ho dubbi sulla validità ma vorrei capire perchè è corretto in questo modo, anche se io l'ho sempre scritto cosi:



class x{
int a;
int b;
X operator=(const X &);
};
//...

X X::operator=(const X & o){
a=o.a;
b=o.b;
return *this;
}


e ha sempre funzionato.

shodan
16-01-2017, 22:06
Il modo 1 non invoca il costruttore di copia, mentre il secondo lo fa.

giuseppe96
16-01-2017, 22:15
Quindi posso utilizzare entrambi? qual'è meglio?

shodan
17-01-2017, 01:06
Usa il modo 1. Il modo 2 fa un'operazione in più per niente.

giuseppe96
17-01-2017, 14:10
okok grazie mille!!

Loading