在C++中,从函数返回函数本地std::string变量的最佳方式是什么?
std::string MyFunc()
{
std::string mystring("test");
return mystring;
}
std::string ret = MyFunc(); // ret has no value because mystring has already gone out of scope...???
发布于 2010-10-20 18:45:27
不是的。这不是真的。即使mystring
已经超出作用域并被销毁,ret
也有一个mystring的副本,因为函数MyFunc
按值返回。
发布于 2010-10-20 18:46:50
你试过了吗?字符串在返回时被复制。这是官方的说法,实际上副本可能已经被优化了,但无论哪种方式,使用它都是安全的。
发布于 2010-10-20 19:31:32
在MyFunc()之后,ret会有一个mystring的值。在通过值返回结果的情况下,通过复制本地对象来构造临时对象。
对我来说,在C++ FAQ Lite的这些部分中有一些关于这个主题的有趣的细节。
https://stackoverflow.com/questions/3976935
复制相似问题