如何在不收到警告的情况下返回对象的引用:
std::string& GetString()
{
std::string str = "Abcdefghijklmnopqrstuvwxyz";
return str;
}
int main()
{
std::string str = GetString();
}
Run Code Online (Sandbox Code Playgroud)
这会导致对恭维的警告.
Jam*_*lis 14
在您的示例中,您将返回对局部变量的引用str.一旦GetString()返回,str就会被销毁并且引用无效(它指的是已被销毁的对象).
如果返回对对象的引用,则它必须是在函数返回后仍然有效的对象(例如,它不能是局部变量).
在这种特殊情况下,您必须str按值返回.返回引用的最常见用途是返回对成员变量的引用的成员函数.