Was wäre eine kurze Definition einer Referenzvariablen in C++?
Was ist eine Referenzvariable in C++?
sirius79m
EIN Hinweis ist eine Entität, die ein Alias für eine andere ist Objekt.
EIN Hinweis ist kein Variable Als ein Variable wird erst durch die Erklärung von an eingeleitet Objekt. Ein Objekt ist ein Speicherbereich und in C++ belegen Verweise (notwendigerweise) keinen Speicherplatz.
Als Objekte und Verweise sind unterschiedliche Gruppen von Entitäten in C++, daher ist der Begriff “Referenzvariable” nicht sinnvoll.
-
Nun, nicht noch eine Variable. Gut, dass C++0x das behebt – es ist ein seit langem bestehendes Problem im Standard. Sehen open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#633 und werfen Sie einen Blick auf n3090, es wurde bereits in die FCD integriert. Wie auch immer, der Vollständigkeit halber könnten Sie erwähnen, dass Referenzen auch auf Funktionen verweisen können. +1 für technische Genauigkeit 🙂
– Johannes Schaub – litb
4. Mai 2010 um 16:48 Uhr
-
Entschuldigung, dass ich einen alten Beitrag wieder aufgreife. Bedeutet das, dass ich in C++ 11/14/17 den Begriff „Referenzvariable“ sicher verwenden kann, wenn ich darüber spreche?
int& b = a
?– Ilio Catallo
22. Oktober 2015 um 9:27 Uhr
-
Seit C++11, Variable bedeutet Referenz oder Objekt. Sehen [basic]/6 in C++14 zum Beispiel: “A Variable wird durch die Deklaration einer anderen Referenz als eines nicht statischen Datenmembers oder eines Objekts eingeführt. Der Name der Variablen, falls vorhanden, bezeichnet die Referenz oder das Objekt.”
– MM
17. Februar 2016 um 23:51 Uhr
-
Gute Antwort – jeder, der viel Zeit mit Grokking verbracht hat vollständig objektbasierte Sprachen (wie Python) werden Ihnen sagen, dass sogar die Erste Der Name, der einem Objekt gegeben wird, ist technisch gesehen eine Referenz 🙂 Der Objekt selbst ist namenlos, es macht nur wenig Sinn, einen zu erstellen, der auf irgendeine Weise dorthin gelangt.
– paxdiablo
10. Juli 2017 um 5:47 Uhr
pankaj bhatt
Eine Referenzvariable stellt einen Alias (alternativen Namen) für eine zuvor definierte Variable bereit. Zum Beispiel:
float total=100;
float &sum = total;
Es bedeutet beides total
und sum
sind die gleichen Variablen.
cout<< total;
cout << sum;
Beide geben den gleichen Wert, 100
. Hier die &
operator ist nicht der Adressoperator; float &
bedeutet einen Verweis auf Float.
aJ.
Eine Referenzvariable ist ein Alias (ein alternativer Name) für ein Objekt. [From the C++ FAQ].
-
Tolle häufig gestellte Frage: “Verwenden Sie Referenzen, wenn Sie können, und Hinweise, wenn Sie müssen.”
– Hernán Eche
4. Mai 2010 um 14:16 Uhr
Daniel Wassallo
Der erste Absatz des Wikipedia-Artikel könnte leicht als kurze Definition dienen:
In der Programmiersprache C++ ist eine Referenz ein einfacher Referenzdatentyp, der weniger leistungsfähig, aber sicherer ist als der von C geerbte Zeigertyp.
Und zitiere aus demselben Artikel:
C++-Referenzen unterscheiden sich von Zeigern in mehreren wesentlichen Punkten:
Es ist nicht möglich, direkt auf ein Referenzobjekt zu verweisen, nachdem es definiert wurde; Jedes Vorkommen seines Namens bezieht sich direkt auf das Objekt, auf das es verweist.
Sobald eine Referenz erstellt wurde, kann sie später nicht mehr auf ein anderes Objekt verweisen; es kann nicht neu eingesetzt werden. Dies geschieht oft mit Zeigern.
Referenzen können nicht null sein, während Zeiger dies können; Jede Referenz bezieht sich auf ein Objekt, obwohl es gültig sein kann oder nicht.
Referenzen können nicht deinitialisiert werden. Da es unmöglich ist, eine Referenz neu zu initialisieren, müssen sie sofort nach ihrer Erstellung initialisiert werden. Insbesondere müssen lokale und globale Variablen dort initialisiert werden, wo sie definiert sind, und Verweise, die Datenelemente von Klasseninstanzen sind, müssen in der Initialisiererliste des Klassenkonstruktors initialisiert werden.
Weiterlesen:
- Wikipedia: Referenz C++
- Cprogramming.com: C++-Referenzen
- Stack Overflow: Unterschied zwischen Zeigervariable und Referenzvariable in C++
Enrico Carlesso
Es ist eine Variable, die Verweise noch einer:
int foo;
int& bar = foo;
bar
ist jetzt eine Referenz, das soll heißen bar
hält den Speicherort wo foo
Lügen.
Sehen Hier für mehr Informationen.
-
Technisch nicht. Wenn bar eine Variable wäre, könnten Sie ihre Adresse erhalten. Eine Referenz ist ein Alias für eine andere Variable (nicht die Adresse von, da dies implizieren würde, dass der Compiler eine Dereferenzierungsoperation einfügen müsste). Wenn dies kompiliert wird, wird bar wahrscheinlich nur durch foo ersetzt.
– Martin York
4. Mai 2010 um 15:07 Uhr
-
Ihr Text beschreibt einen Zeiger. Eine Referenz enthält keinen Speicherplatz und erfordert möglicherweise keinen Speicherplatz. (In Ihrem Beispiel wahrscheinlich
bar
verwendet keinen Speicher).– MM
7. Juli 2015 um 23:40 Uhr
cammando
EIN Referenzvariable ist ein alias für die Variablennamen.
Es unterscheidet sich von den Zeigern auf folgende Weise:
- Sie können keine NULL-Referenzen haben. Sie müssen immer davon ausgehen können, dass eine Referenz mit einem legitimen Speicherort verbunden ist.
- Sobald eine Referenz auf ein Objekt initialisiert wurde, kann sie nicht mehr geändert werden, um auf ein anderes Objekt zu zeigen, während wir im Falle eines Zeigers jederzeit auf ein anderes Objekt zeigen können.
- Eine Referenz muss zum Zeitpunkt ihrer Erstellung initialisiert werden. Zeiger können jederzeit initialisiert werden.
-
Technisch nicht. Wenn bar eine Variable wäre, könnten Sie ihre Adresse erhalten. Eine Referenz ist ein Alias für eine andere Variable (nicht die Adresse von, da dies implizieren würde, dass der Compiler eine Dereferenzierungsoperation einfügen müsste). Wenn dies kompiliert wird, wird bar wahrscheinlich nur durch foo ersetzt.
– Martin York
4. Mai 2010 um 15:07 Uhr
-
Ihr Text beschreibt einen Zeiger. Eine Referenz enthält keinen Speicherplatz und erfordert möglicherweise keinen Speicherplatz. (In Ihrem Beispiel wahrscheinlich
bar
verwendet keinen Speicher).– MM
7. Juli 2015 um 23:40 Uhr
Scott Stenland
Referenzvariablen ermöglichen es, dass zwei Variablennamen denselben Speicherplatz adressieren:
int main()
{
int var1;
// var2 is a reference variable, holds same value as var1
int &var2 = var1;
var1 = 10;
std::cout << "var1 = " << var1 << std::endl;
std::cout << "var2 = " << var2 << std::endl;
}
Ressource: VERKNÜPFUNG
Referenzen können nützlich sein, da sie die Verwendung von initialisiertem Speicher erzwingen (dh sie können bei normaler Verwendung nicht auf null verweisen).
– Nick Bolton
4. Mai 2010 um 14:14 Uhr
Eine Referenz ist nur syntaktischer Zucker für a
const
Zeiger (nicht unbedingt Zeiger auf Konstante). Es gibt keinen besonderen Schutz gegen einen Verweis auf NULL, es verursacht ein undefiniertes Verhalten, genau wie das Dereferenzieren eines NULL-Zeigers. Umständlich kann man sagen, dass der Aufrufer gegen den C++-Standard verstoßen hat, indem er NULL dereferenziert und eine NULL-Referenz übergeben hat, anstatt gegen den API-Vertrag zu verstoßen, indem er einen NULL-Zeiger als nicht nullbaren Parameter übergeben hat, aber technisch und im typischen Laufzeitverhalten gibt es keinen Unterschied was auch immer.– Ben Voigt
4. Mai 2010 um 14:18 Uhr
stackoverflow.com/questions/57483/…
– anon
4. Mai 2010 um 14:25 Uhr