Ritorno ridefinizione operatore

Gianni911
Ciao a tutti potreste chiarirmi ,quando usare queste due notazione??o meglio quando usare una o l'altra e che differenze ci sono..
class A{//
public:A();
};

Solitamente per la ridefinizione degli operatori faccio uso di queste due notazioni
A A::operator();

oppure con ritorno per riferimento
A& A:: operator();

Quello che ho capito é che una dovrebbe restituire una variabile[la prima situazione] e l'altra un valore ,ma non ne sono tanto sicuro..
Potreste chiarirmi questa situazione??
Grazie!!

Risposte
apatriarca
Entrambi i codici non sono validi non essendo presente alcun operatore dopo operator. Dovrebbe essere qualcosa come operator+() oppure operator()() oppure.. In ogni caso la scelta su quale tipo restituire dipende molto sia dal tipo di operatore sia da considerazioni di performance o di preferenze personali. Non esiste una risposta univoca.

Gianni911
Hai ragione non ho messo nessun operatore specifico perchè. Speravo in una situazione generale.Nel caso di ridefinizione incremento postfisso ??

apatriarca
Per l'operatore di incremento postfisso io preferisco restituire una copia invece che un riferimento (è molto più semplice ed è in questo caso impossibile evitare di fare una copia). In generale è comunque praticamente sempre meglio dal punto di vista delle performance usare l'operatore prefisso in quanto non necessita di copie.

Gianni911
"apatriarca":
Per l'operatore di incremento postfisso io preferisco restituire una copia invece che un riferimento (è molto più semplice ed è in questo caso impossibile evitare di fare una copia). In generale è comunque praticamente sempre meglio dal punto di vista delle performance usare l'operatore prefisso in quanto non necessita di copie.

bene..
Vorrei chiederti adesso ,cosa causa l'utilizzo dell'uno e della'ltra forma,xchè vorrei essere sicuro di aver capito..in particolare quella senza &
Grazie

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.