Während this explanation auf lvalues und rvalues lesen, stecken diese Zeilen Code zu mir:Was bedeutet "int & foo()" in C++?
int& foo();
foo() = 42; // OK, foo() is an lvalue
ich es in g ++ versucht, aber der Compiler sagt: "undefined Verweis auf foo()". Wenn ich
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
hinzufügen kompiliert es in Ordnung, aber es läuft gibt einen segmentation fault. Nur die Linie
int& foo();
von sich aus kompiliert und läuft ohne Probleme.
Was bedeutet dieser Code? Wie können Sie einem Funktionsaufruf einen Wert zuweisen, und warum ist das kein Rvalue?
Sie weisen * einem Funktionsaufruf * keinen Wert zu, da Sie * der Referenz, die zurückgegeben wird * einen Wert zuweisen. –
@ FrédéricHamidi weist dem Objekt einen Wert zu, auf den sich die zurückgegebene Referenz bezieht –
@ M.M, die Referenz * ist * das Objekt - es ist ein Alias. –