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

    [C++] funzioni che ritornano valori per riferimento

    Salve a tutti, ho un dubbio. Sto studiando i passagi per riferimento in C++. Mi è stato detto che è possibile creare ache funzioni che ritornano valori per riferimento, ad esempio
    codice:
    int& funzione (...) {………}
    Potreste chiarirmi un po' le idee in merito alle funzioni che ritornano valori per riferimento, magari con qualche esempio.

  2. #2
    Non c'è nulla di così strano... un riferimento non è altro che un alias per un'altra variabile, o, se preferisci, un puntatore nascosto. Se restituisco un riferimento ad una variabile il valore restituito dalla funzione di fatto si riferirà ad un'altra variabile (quella che ho messo a destra del return nella funzione), e modificando il valore restituito dalla funzione la modifica si ripercuoterà sulla variabile.
    In genere i reference come valori restituiti si usano nei metodi delle classi, dato che ovviamente la variabile a cui si riferisce il reference deve avere un tempo di vita superiore a quello della funzione (non ha senso cioè restituire un reference ad una variabile locale, dato che questa muore quando termina la funzione); i reference come valori restituiti sono spesso usati per i cosiddetti "accessors" (piccole funzioni che consentono l'accesso a membri privati di una classe):
    codice:
    class Test
    {
    private:
        int a;
    public:
        int & GetA()
        {
             return a;
        }
    };
    
    Test istanza;
    istanza.GetA() = 10; // ora il membro a di istanza vale 10
    cout<<istanza.GetA(); // visualizza 10
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    Originariamente inviato da MItaly
    Non c'è nulla di così strano... un riferimento non è altro che un alias per un'altra variabile, o, se preferisci, un puntatore nascosto. Se restituisco un riferimento ad una variabile il valore restituito dalla funzione di fatto si riferirà ad un'altra variabile (quella che ho messo a destra del return nella funzione), e modificando il valore restituito dalla funzione la modifica si ripercuoterà sulla variabile.
    In genere i reference come valori restituiti si usano nei metodi delle classi, dato che ovviamente la variabile a cui si riferisce il reference deve avere un tempo di vita superiore a quello della funzione (non ha senso cioè restituire un reference ad una variabile locale, dato che questa muore quando termina la funzione); i reference come valori restituiti sono spesso usati per i cosiddetti "accessors" (piccole funzioni che consentono l'accesso a membri privati di una classe):
    codice:
    class Test
    {
    private:
        int a;
    public:
        int & GetA()
        {
             return a;
        }
    };
    
    Test istanza;
    istanza.GetA() = 10; // ora il membro a di istanza vale 10
    cout<<istanza.GetA(); // visualizza 10
    anche se in questo caso tanto varrebbe dichiarare "a" public

  4. #4
    Originariamente inviato da sebaldar
    anche se in questo caso tanto varrebbe dichiarare "a" public
    Chiaramente si tratta di un esempio.
    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.