Perfetto grazie tutto chiaro, solo 2 domande:
1) Però perché "int + class" non lo sa fare (invece di "class + int") ?
2) Facendo questa chiamata nascosta, non si spreca memoria?
Anzi già che ci sto ti chiedo un'altra cosa sugli operatori che mi fa preoccupare:
Leggendo un libro sul c++, ho letto di fare molta attenzione riguardo al costruttore per copia, perché visto che quello di default copia bit a bit, se uso puntatori nella classe rischio di andare a condividere lo stesso membro tra più classi se uso l'=. Questo fatto mi ha fatto venire la paranoiae non so mai bene cosa fare per fare le cose fatte bene...
Ad esempio se ho la classe C, e C1, C2, C3 tre variabili di quella classe, se io scrivo:
C3 = C1 + C2
allora, viene chiamato il + di C1 e viene passato C2, il + fa il suo lavoro e crea un NUOVO oggetto che chiamiamo T1; Poi viene chiamato il costruttore per copia (o l'operator = ?!?) di C3, gli viene passato T1, e si crea un nuovo oggetto T2, e T1 muore. Infine T2 viene copiato bit a bit in C3, e T2 muore.
Ora, non sono per niente sicuro di quello che ho detto (perdonami sto studiando ora), ma chi viene chiamato in quel codice? il costruttore per copia o l'=?
E inoltre possibile che per una semplice assegnazione vengono create ben 2 classi temporanee? Non è uno spreco indecente di memoria? Se facessi qualche espressione composita tipo (C1 + C2) + (C3 + C4) vengono create tantissime variabili temporanee?!
Inoltre c'è differenza tra fare:
C C1; C C2; C C3; C3 = C1 + C2;
e
C C1; C C2; C C3 = C1 + C2;
??? quegli uguali che fanno???
Scusami per le troppe domande, ma sono molto confuso su questa cosa!
Ti ringrazio in anticipo![]()