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
valverwenden?
-
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
inlineverwenden?
-
Wie meinst du das?
-
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

-
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
valverwenden?
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.