salve a tutti, oggi studiando per l'esami di informatica mi sono imbattuto in una classe denominata complesso:
codice:
class complesso {
double re;
double im;
public:
//...
complesso operator+ (complesso x)
complesso operator+ (double d)
//...
};
la classe ovviamente usa il meccanismo dell'overloading per "capire" quale operatore utilizzare.
a me interessa l'operator+ (double d), per cui vi metto la porzione di codice che lo dichiara:
codice:
complesso complesso::operator+ (double d) {
complesso z;
z.re = re+d;
z.im = im;
return z;
}
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?
andiamo avanti, successivamente nel main viene chiamata questa istruzione:
codice:
int main () {
complesso w, complesso z;
w= z + 3.0;
}
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???
grazie mille delle risposte!