Referenz als Rückgabewert
-
Nehmen wir an, wir haben folgende Funktion, die einen Parameter als Referenz annimmt und diese auch als Referenz zurückgibt:
int & f(int &x) { return x; }Den Rückgabewert kann ich einmal so
int &i1 = f(x);und einmal so
int i2 = f(x);schreiben.
Ich sehe keinen Unterscheid beim Arbeiten mit i1 und i2. Wodurch Unterscheiden sich i1 und i2?
-
- In C gibts keine Referenzen
- i1 ist eine Referenz auf das originale x während i2 eine Kopie von x ist. D.h. wenn du i1 veränderst, änderst du auch x, da i1 nur ein Alias für x ist. i2 ist dagegen ein eigenes Objekt.
-
#include <iostream> int & f(int &x) { return x; } int main() { int x = 500; int &i1 = f(x); int i2 = f(x); std::cout << i1 << std::endl; std::cout << i2 << std::endl; std::cout << x << "\n" << std::endl; i2 = 10; std::cout << i1 << std::endl; std::cout << i2 << std::endl; std::cout << x << "\n" << std::endl; i1 = 5; std::cout << i1 << std::endl; std::cout << i2 << std::endl; std::cout << x << "\n" << std::endl; x = 3; std::cout << i1 << std::endl; std::cout << i2 << std::endl; std::cout << x << "\n" << std::endl; return 0; }
-
Ich sehe grad, dass ich im Falschen Forenabteil gepostet hab. Könnte ein Moderator das verschieben? Danke!
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum C++ (auch C++0x, bzw. C++11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Danke!