Originariamente inviato da MItaly
No, risultato->mat si riferisce al mat membro dell'istanza a cui fa riferimento risultato (che è quella che hai allocato dinamicamente), non al mat dell'oggetto corrente.
Ribadisco comunque che è una
pessima idea fare overloading degli operatori in questa maniera, visto che gli operatori così ridefiniti sono inutilizzabili; supponi di voler sommare tre matrici:
codice:
Mat<int> m1, m2, m3;
// ... qui vengono inizializzate in qualche maniera ...
Mat<int> ris;
ris = m1 + m2 + m3;
Con la tua implementazione di operator+, in questo codice apparentemente innocente si nascondono tre memory leaks, dato che tutti gli oggetti temporanei creati dalle chiamate a operator+ sono allocati dinamicamente ma non vengono mai deallocati tramite delete.
Infine, di rado si effettua l'overloading dell'operatore + in quella maniera, piuttosto si fa l'overloading di += e in base a quello (e al costruttore di copie) si definisce operator+.