我想我从 TC++PL 中学到了 “非常量引用应由左值初始化”。
下面是我的问题
int f1(int &x)
{
return 1;
}
int f2()
{
return 1;
}
int f3(string &s)
{
return 1;
}
string f4()
{
return "1";
}
int main()
{
cout<<f1(f2())<<endl; // Error.
cout<<f3(f4())<<endl; // OK.
}
所以我无法理解为什么 f3(f4()) 是正确的,而 f4() 的返回值显然不是左值。
最佳答案
我认为,您使用的是 Microsoft Visual C++ 编译器,它使用默认选项编译此代码。这是因为其中有非标准扩展,允许将右值绑定(bind)到左值引用。 有关这如何在 MSVC 中工作的更多信息,您可以阅读 rvalue to lvalue conversion Visual Studio
关于c++ - 非常量引用的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190252/