Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    41

    [C++] pass-by-reference

    Scusate sto studiando un pò i constructor e gli assignment operator ma ho difficoltà a interpretare la sintassi e dalle guide e tutorial che trovo non riesco bene a capire.

    facciamo esempio che in una class voglia inserire un copy constructor, potete spiegarmi cosa significa l'argomento del copy nel seguente listato:

    codice:
    class exemple{
          private:
                    void copy(const exemple& rhs); //non capisco example& rhs)
    ..........
    
    }

    cioè intuisco che nel caso di copy si voglia mantenere costante il parametro passato, ma non capisco "&" in exemple&.
    Rhs vedo significare right hand side ed è ok. Qualcuno può gentilmente spiegarmi meglio il funzionamento di questo constructor? grazie molte,

    Iacopo

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    41
    ok la keyword const mi aveva un pò confuso le idee e mi sono alla fine risposto da solo:

    praticamente il constructor passa right hand side by reference, ma non vogliamo che l'originale passato per referenza (e non una copia) sia modificato quindi si mette const di modo che appunto si eviti il processo di copia ma non si inquinino i valori originali giusto???

    grazie, iacopo.

    P.S. non ho ben capito perchè si fa questo, per risparmiare costo computazionale??

  3. #3
    Originariamente inviato da Toxotes
    ok la keyword const mi aveva un pò confuso le idee e mi sono alla fine risposto da solo:

    praticamente il constructor passa right hand side by reference, ma non vogliamo che l'originale passato per referenza (e non una copia) sia modificato quindi si mette const di modo che appunto si eviti il processo di copia ma non si inquinino i valori originali giusto???
    Esattamente.
    P.S. non ho ben capito perchè si fa questo, per risparmiare costo computazionale??
    In genere si fa per evitare di creare copie per niente. Per molti oggetti la creazione di una copia è un'operazione costosa (ad esempio un std::vector con dentro molti elementi), oppure non è nemmeno possibile (vedi ad esempio std::fstream), per cui si passa per reference; il const viene aggiunto come garanzia per il chiamante che la funzione non andrà a modificare l'oggetto in questione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    41
    Originariamente inviato da MItaly
    Esattamente.

    In genere si fa per evitare di creare copie per niente. Per molti oggetti la creazione di una copia è un'operazione costosa (ad esempio un std::vector con dentro molti elementi), oppure non è nemmeno possibile (vedi ad esempio std::fstream), per cui si passa per reference; il const viene aggiunto come garanzia per il chiamante che la funzione non andrà a modificare l'oggetto in questione.
    thx

  5. #5
    Amaro C++, il gusto pieno dell'undefined behavior.

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.