Referenz
-
Eine Referenz ist etwas anderes als ein Pointer...
Und das was du da machst, ist unnötig Oo
Da kann er gleich value übergeben, so wie er es gemacht hat.
-
nö, referenz übergabe heist speicheradresse übergabe (cal by recerence) und daneben gibt es das übliche Call by Value, also mittels ner normalen variablen. da bin ich mir ziemlich sicher

-
trotzdem... warum so umständlich mit dem pointer-gewirr?
-
Noch nä Frage, ich verstehe noch nicht ganz, eigentlich sollte man doch am besten immer Referenzen als Parameter verwenden. Weil ich habe gelernt, ohne Referenz wird eine Kopie der Variable erstellt und dass kostet Zeit. Mit Referenz wird direkt auf die Variable zugegriffen, keine Kopie somit kein Zeitverlust.
Oder sollte ich eine Referenz nur nutzen wenn ich eine Variable außerhalb der Funktion verändern möchte weil sonst würde ja wieder eine unötige Kopie entstehen) aber wenn ja, warum?Referenz:
int a=12; func(a); void func(int &a) { a=2*a; }Call by value: (mh is vll. n eher schlechtes Beispiel, mir fällt grad nix anderes ein)
int a=12; a=func(a); int func(int a) //Kopie 1 { return a*2; //Kopie 2 }MfG
Stromberg
-
ich meine wenn oben &varaible verwendet wird muss auch ne referenz übergeben werden... udn das mittels zeiger. oder nicht

-
rumcajs007 schrieb:
ich meine wenn oben &varaible verwendet wird muss auch ne referenz übergeben werden... udn das mittels zeiger. oder nicht

Kann es sein, das du von C kommst? Wir sprechen hier von C++.
Referenzen haben nichts mit Pointer zutun! Wie bereits von jemand anderem gesagt.
-
Nein, eine Referenz muß kein Zeiger sein, sondern kann auch ein Objekt sein, nur darf dieses eben nicht konstant sein (wie z.B. von akari schon angemerkt wurde).
Und bei den eingebauten Datentypen sollte man keine konstanten Referenzen benutzen, sondern eine einfache Wertübergabe, da diese Datentypen höchstens so groß wie ein Zeiger sind (welcher intern bei Referenzen verwendet wird).
Also:void func(int x, const Class &cl); // nicht: void func(const int &x, Class cl); // cl würde eine Kopie darstellenNur wenn wirklich eine echte (nicht-konstante) Referenz benötigt wird, sollte man diese übergeben, ansonsten 'const-correctness' beachten.
-
eigentlich nicht, ich komme aus F dh. Frankfurt, dürfte ich mal erfahren was daran nicht stimmt :p
...okreferenz heisst doch speicheradresse von was auch immer, variable, stuktur oder objekt, oder nicht

-
rumcajs007 schrieb:
referenz heisst doch speicheradresse von was auch immer, variable, stuktur oder objekt, oder nicht

Nein, ebend nicht! Oder du kommst von Java? Wir sind hier in der C++-Welt!
Referenzen in C++ heißt: "Eine Referenz ist ein anderer Name für eine Variable." Nicht mehr und nicht weniger.
http://www.kharchi.eu/wiki/doku.php?id=cpp:std:reference
-
ah soo, danke für'n link
