Visualizzazione dei risultati da 1 a 6 su 6

Visualizzazione discussione

  1. #1
    Utente di HTML.it L'avatar di Narsil_
    Registrato dal
    Aug 2015
    residenza
    Venezia
    Messaggi
    3

    [C++] Classi e metodi costanti

    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.

    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)
    }
    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?
    Grazie in anticipo
    Ultima modifica di Narsil_; 04-08-2015 a 12:56

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.