Speicherobjekte (Referenzen) ?



  • also vorab will ich wissen wozu man eine Referenz den gebrauchen kann?
    da die Referenz in Laufzeit nicht mehr verändert werden kann und auch wenn dem Alias, der Referenz eines Speicherobjektes ein neuer wert zugewiesen wird , wird das ursprüngliche Speicherobjekt auch auf diesen wert gestellt, also wozu brauch ich dann eine Referenz.

    int val;
    int &rval = val;
    

    da kann ich doch gleich das ursprüngliche Speicherobjekt also hier

    val
    

    verwenden?



  • Referenzen benutzt man üblicherweise bei Parametern. Man kann sie aber auch zur verkürzung des Codes verwenden.

    int& ref = ich_bin_ein_ganz_ganz_langer_komplizierter_ausdruck;
    cout << ref;
    ref += 42;
    


  • sollte man dafür nicht eher

    inline
    

    verwenden?



  • Wie meinst du das?


  • Mod

    Nein, inline macht ganz ganz ganz was anderes.



  • SeppJ schrieb:

    Nein, inline macht ganz ganz ganz was anderes.

    ja ersetzt die funktion an ort und stelle wo sie aufgerufen wird. so hab ich das beispiel von user 3456781238 verstanden? deshalb bin ich auf inline gekommen... aber erklärt mir die referenz sache noch immer nicht...schade 😞


  • Mod

    Häh? Welche Funktion? Wovon redest du überhaupt?



  • buntehaare schrieb:

    SeppJ schrieb:

    Nein, inline macht ganz ganz ganz was anderes.

    ja ersetzt die funktion an ort und stelle wo sie aufgerufen wird.

    Inlining als solches schon - das Keyword inline nicht.



  • Mal ein paar gebräuchliche Verwendungen für Referenzen.

    void ToLower(std::string& text)
    {
      // mach text lower
    }
    // vs.
    std:string ToLowerCopy(std::string text)
    {
      ToLower(text);
      return text;
    }
    
    size_t CountLowerCaseLetters(const std::string& text)
    {
      return count_if(begin(text), end(text), IsLower);
    }
    
    class Container
    {
    public:
      Element& operator[](size_t index);
      const Element& operator[](size_t index) const;
    };
    


  • buntehaare schrieb:

    also vorab will ich wissen wozu man eine Referenz den gebrauchen kann?
    da die Referenz in Laufzeit nicht mehr verändert werden kann und auch wenn dem Alias, der Referenz eines Speicherobjektes ein neuer wert zugewiesen wird , wird das ursprüngliche Speicherobjekt auch auf diesen wert gestellt, also wozu brauch ich dann eine Referenz.

    int val;
    int &rval = val;
    

    da kann ich doch gleich das ursprüngliche Speicherobjekt also hier

    val
    

    verwenden?

    Eine Übergabe des Parameters mittels Referenz bei einer Funktion z.B. hat den Vorteil,daß keine Kopie des Parameters erstellt wird und somit die Performance besser ist (Speicherverbrauch, Geschwindigkeit)
    Insbesondere, wenn z.B. sehr große Objekte von Klassen übergeben werden müssen,
    kann das sehr viel ausmachen.


Anmelden zum Antworten