Salve a tutti. Stavo provando a fare un esercizio di C++ riguardante classi e metodi e mi sono bloccato in un punto. La richiesta è dire se le istruzioni del main compilano o meno.
Ho provato a compilare e il risultato è che la numero 7 non compila, mentre le altre sì. Qualcuno è in grado di spiegarmi il perchè? Mi è venuto in mente che z.G(y) restituisce un tipo C per valore, mentre H ha come parametro formale un tipo C per riferimento, quindi quando invoco x.H gli sto passado solo un valore e non una variabile completa. Ma secondo questo ragionamento dovrebbero essere sbagliate anche le istruzioni successive, ma il compilatore dice altrimenti. Sono completamente fuori strada?codice:class C { private: int x; public: C(int n=0){x=n;} C G (C obj) const {C r; r.x=obj.x+x; return r;} C H (C& obj) {obj.x+=x; return obj;} C I (const C& obj) {C r; r.x=obj.x+x; return r;} C J (const C& obj) const {C r; r.x=obj.x+x; return r;} }; int main() { C x, y(1), z(2); const C v(2); x.H(z.G(y)); // (7) x.I(z.G(y)); // (8) x.J(z.G(y)); // (9) v.J(z.G(y)); // (10) }
Grazie in anticipo