PDA

Visualizza la versione completa : [C++] Domanda su overload operatori


gygabyte017
20-08-2010, 23:26
Ciao a tutti, volevo chiedere, quale tra questi due codici è il più corretto?

A)
class C
{
public:
int n;
explicit C(int m = 0){ n=m; }

C operator +(C o){ return C(n+o.n); }
};

oppure B)
class C
{
public:
int n;
explicit C(int m = 0){ n=m; }

C operator +(C o){ n += o.n; return *this; }
};

? Cioè è meglio creare un nuovo oggetto o modificare quello già esistente?

Grazie

shodan
20-08-2010, 23:36
Rifletti un attimo: una somma modifica i suoi addendi?

gygabyte017
21-08-2010, 00:26
Originariamente inviato da shodan
Rifletti un attimo: una somma modifica i suoi addendi?

hai ragione, è una domanda stupidissima! ovvio che no, la B non ha senso...

Ippo343
21-08-2010, 12:08
Però la B è l'implementazione dell'operatore +=, che può far comodo.

gygabyte017
21-08-2010, 12:59
Infatti te lo stavo per chiedere, quindi quel codice va benissimo per il += giusto?

Domandina: ma come mai, una volta definiti il + e l'= non esiste un += di default, che fa - appunto - quello che dovrebbe fare il +=, cioè trasformare "a+=b" in "a=a+b" dove sia + che = esistono? Ovviamente per mille motivi uno potrebbe ridefinirlo per fargli fare quello che è più opportuno fare, però in casi semplici in genere il "comportamento di default" sarebbe corretto...

Loading