Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] Aiutino costruttori

    Salve a tutti!
    E' da qualche settimana che ho cominciato a mettere le mani sul C++, avendo conoscenze solo di C.
    Quindi alcune cose fatico ancora a comprenderle.

    Vi posto un esercizietto idiota, ma che mi dà da riflettere...

    codice:
    class C {
    private:
      int x;
    public:
      C(int n=0) {x=n;}
      C F(C obj) {C r; r.x=obj.x+x; return r; }
      ....
    };
    
    int main() {
      C x, y(1), z(2); const C v(2);
      z=x.F(y);
      ...
    }
    Bene, primo dubbio.
    L'unico costruttore dichiarato nella classe è ad un parametro (con argomento di default), quindi non dovrei più avere a disposizione il costruttore standard. Giusto?
    Non capisco perché la dichiarazione C x nel main sia corretta.
    Non dovrei poterla fare solo se ho a disposizione un costruttore di default, o comunque standard?
    Probabilmente sto facendo confusione...

    Ultima cosa: l'istruzione nel main x.F(y) cosa fa esattamente?
    Applica il metodo F sull'oggetto di invocazione x. Non capisco però che ruolo svolga poi x nell'esecuzione del metodo.
    Qualcuno sa spiegarmi, in parole povere, cosa accade con quell'istruzione?

    Grazie

  2. #2
    Provo ad essere più specifica, visto che nessuno si lancia!

    Riguardo al primo dubbio:
    se il costruttore fosse stato sempre ad un parametro, SENZA però argomento di default, quindi una cosa tipo C(int n) {x=n;}, l'istruzione nel main C x sarebbe stata illegale?
    Se la risposta a questa domanda è si, allora ho risolto il problema.

    Per il secondo dubbio:
    credo di aver sbrogliato quali campi dati di quali oggetti vengono settati e come... e nella funzione F il campo dati x dell'oggetto r dovrebbe valere 1, se il mio ragionamento è corretto.
    Mi chiedo però cosa dovrebbe ritornare esattamente il comando "return r", sempre nel corpo di F. Ritorna il campo dati x di r? Non credo proprio...


    Grazie ancora

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Il fatto è che hai scritto

    C(int n=0) {x=n;}

    rendendo il parametro "opzionale" e quindi accettando implicitamente che non esista.

    Se scrivessi

    C(int n) {x=n;}

    avresti dei problemi
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219

    Re: [C++] Aiutino costruttori

    codice:
    C F(C obj) {C r; r.x=obj.x+x; return r; }
    Ritorna un oggetto di tipo C, il parametro obj serve per settare il campo x dell' oggetto che verrà ritornato.

  5. #5
    Originariamente inviato da oregon
    Il fatto è che hai scritto

    C(int n=0) {x=n;}

    rendendo il parametro "opzionale" e quindi accettando implicitamente che non esista.

    Se scrivessi

    C(int n) {x=n;}

    avresti dei problemi
    Chiarissimo, grazie!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.