#include <iostream>
#include <string>
using namespace std;
string&& f(string&& rvf)
{
cout << rvf << endl;
return (string&&)rvf;
// in the return statement, how rvf has become an lvalue?
// because of this I had to typecast explicitly
}
string&& g()
{
return "xyz";
}
int main()
{
string&& st = f("rvalue");
cout << "f " << st << endl;
string&& st2 = g();
cout << "g " << str2 << endl;
// why this line prints junk/crashes some times?
return 0;
}
一般的な質問は:これらの右辺値のリファレンスはどういう意味ですか?
我々は、通常の変数に右辺値を割り当て、コピーが行われていますか?右辺値が別の変数にどの程度正確に「移動」されていますか?
コピー後に何が発生しますか?それはすぐに破壊されるか、その範囲外になるか?
通常、戻り値の型としてrvalue参照を使用する理由はありません。ちょうど価値によって戻ります。 –