Refernz als Rückgabewert
-
Hallo Leute, habe vor kurzem erfahren, das es auch Funktionen mit Referenzen als Rückgaberwert gibt, also z.B
string &sstr(string &str) // FunktionIch kapiere einfach nicht was es uns bringt die komplette Funktion als Referenz zu schreiben und dann durch return diese zurückzugeben. Besser egsagt, wann würde man eine Funktion mit einer Refernz als Rückgaberwert gebrauchen? Denn wenn ich ja schon in meinen Parametern eine Referenz habe und irgendwelche operationen an ihnen ausführe, wird die Datei zu welcher, wie in diesem Beispiel, str eine Refernz ist schon geändert und somitz müsste ich ja nicht die komplette Funktion als Refernz machen oder?
-GhostfaceChilla-
-
Könnte man, damit so was möglich ist
foo(sstr(str))Allerdings sind normale Anwendungsfälle eher irgendwelche Getter Funktionen.
-
zum Beispiel bei einem Singleton könntest du die Instanz als Referenz zurückgeben.
foo& foo::getInstance() { return instance; }greetz KN4CK3R
-
komplette Funktion als Referenz zu schreiben
Das kann man irgendwie so nicht sagen. Man schreibt keine Funktionen als Referenz.
Funktionen können Referenzen als Argumente oder Rückgabewert haben.
-
class DingsenDa { std::string str; public: std::string& data() { return str; } };Und bei deinem Beispiel kann es sehr wohl interessant sein:
std::string& sstr( std::string& str ) { // mach was mit str; return str; }Dadurch dass sstr eine Referenz auf den übergebenen String zurück gibt, sind schön Verkettungen möglich:
std::string dat("irgend eine Zeichenkette"); sstr(dat).append("Hallo Welt");Und nur damit das noch klar wird:
was es uns bringt die komplette Funktion als Referenz zu schreiben und dann durch return diese zurückzugeben
Die Funktion ist keine Referenz, und es wird auch nicht die Funktion zurückgegeben. Die Funktion gibt einfach nur eine Referenz auf etwas zurück. Das was referenziert wird, muss natürlich lange genug leben
