salve a tutti, oggi studiando per l'esami di informatica mi sono imbattuto in una classe denominata complesso:
la classe ovviamente usa il meccanismo dell'overloading per "capire" quale operatore utilizzare.codice:class complesso { double re; double im; public: //... complesso operator+ (complesso x) complesso operator+ (double d) //... };
a me interessa l'operator+ (double d), per cui vi metto la porzione di codice che lo dichiara:
ecco qui c'è la prima cosa che non ho capito, infatti perchè nell'operatore viene dichiarato un complesso z? esso non dovrebbe essere passato come argomento alla funzione?codice:complesso complesso::operator+ (double d) { complesso z; z.re = re+d; z.im = im; return z; }
andiamo avanti, successivamente nel main viene chiamata questa istruzione:
in quest'altra porzione di codice è logico che viene invocato l'operator+ definito sopra, quello che non capisco è come fa a prendere come argomento attuale quel 3.0 che non è passato come argomento di alcuna funzione???codice:int main () { complesso w, complesso z; w= z + 3.0; }
grazie mille delle risposte!

Rispondi quotando