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

    [C/C++]: Riferimenti

    Salve, ho un dubbio molto grande sui riferimenti, allora so che questi posso dare l'indirizzo di un dato ad un puntatore, o possono divenire alias di un dato.
    Detto questo non capisco una cosa:
    class String{
    char *string;
    public:
    String& operator+(const String s) const;

    dunque qui il libro mi dice che operator+ si aspetta un singolo operando di tipo String e restituisce un riferimento a String
    Ora non capita sempre e solo negli operatori di restituire un riferimento, anche le funzioni possono farlo.
    ma che significa restituire un riferimento? Non mi è chiaro questo convetto

  2. #2
    Anke le funzioni possono restituire riferimenti.
    In pratica quando chiami una funzione:

    codice:
    int i = somma(a,b);
    in realtà alla fine di tutte le istruzioni della funzione quel somma(a,b) risulterà solamente un numero esattamente identico a:

    codice:
    int i = 10;
    Ora i riferimenti sai che sono degli indirizzi di memoria in cui un determinato dato è memorizzato. Ma sai che questi indirizzi di memoria sono semplicemente dei numeri che vengono però intesi come indirizzi dal compilatore per via della particolare definizione che hai usato per quella variabile (il famoso puntatore... *nome_var)

    Quindi la funzione restituirà "solo" un numero che poi verrà interpretato come riferimento.

    Ritornare un riferimento significa ritornare un particolare valore che verrà inteso come indirizzo. E' l'inverso che passare un valore per riferimento.
    Pensa se per esempio la funzione dovesse lavorare su una struttura dati molto pesante in termini computazionali... magari una mega matrice... restituire solo l'indirizzo facilita le cose e rende tutto più leggero... alla fin fine è solo un valore! Pensa se invece bisognasse restituire al chiamante ogni singolo elemento della matrice... diventerebbe pesantissimo!!

    Spero di esser stato chiaro è aver chiarito un pò i tuoi dubbi!!!

    Ciao!

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.