Konzept der Wertrückgabe, Wertreferenz und Konstantenreferenz in C++
Dieser Artikel behandelt die Rückgabe eines Werts, Verweise auf Werte und const
-Referenzen in C++.
Rückgabewert in C++
Wenn Sie etwas als Wert zurückgeben, geben Sie eine Kopie des Objekts zurück. Dies erlegt der Klasse Einschränkungen auf.
Dementsprechend kann es für einige Arten von Objekten kostspielig sein, ein Objekt nach Wert zurückzugeben. Dies impliziert auch, dass das neue Objekt unabhängig von anderen Objekten ist und einen Wert hat.
Viele binäre Operatoren wie +
, -
und *
sollten höchstwahrscheinlich diesen Wert zurückgeben.
Verweis auf Wert in C++
In C++ ist eine Referenz ein Objekt, das die Adresse eines anderen Objekts enthält. Dieser Verweis auf Wert geschieht, wenn eine Variable mit dem Typ Verweis auf Typ
deklariert wird.
Ein Verweis auf einen Wert kann mit dem Operator &
in einen Wert umgewandelt werden.
Const
Verweis auf Wert in C++
Eine const
-Variable wird mit einem Wert initialisiert. Dies bedeutet, dass es später nicht mehr geändert werden kann.
Eine const
-Variable kann mit jedem Typ initialisiert werden, einschließlich einer anderen const
-Variablen oder einem konstanten Ausdruck. Die Initialisierung erfolgt normalerweise in der Deklaration, kann aber auch im Rumpf der Funktion erfolgen, solange dies vor der ersten Verwendung der Variablen erfolgt.
Kurz gesagt, Sie können ein Alias-Objekt nicht ändern. Wenn das Kopieren des zurückzugebenden Objekts teuer ist und Sie seine Existenz nach der Rückkehr von einer Funktion garantieren können, können Sie diese Technik verwenden, anstatt den Wert zurückzugeben.
Dies ist, was operator=
normalerweise zurückgibt, um Mehrfachzuweisungen auf eine Weise zu unterstützen, wie es Standardtypen nicht tun.
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook