首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >返回函数本地std::string的最佳方法

返回函数本地std::string的最佳方法
EN

Stack Overflow用户
提问于 2010-10-20 18:42:03
回答 3查看 99.7K关注 0票数 57

在C++中,从函数返回函数本地std::string变量的最佳方式是什么?

代码语言:javascript
复制
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...???
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-20 18:45:27

不是的。这不是真的。即使mystring已经超出作用域并被销毁,ret也有一个mystring的副本,因为函数MyFunc按值返回。

票数 79
EN

Stack Overflow用户

发布于 2010-10-20 18:46:50

你试过了吗?字符串在返回时被复制。这是官方的说法,实际上副本可能已经被优化了,但无论哪种方式,使用它都是安全的。

票数 5
EN

Stack Overflow用户

发布于 2010-10-20 19:31:32

在MyFunc()之后,ret会有一个mystring的值。在通过值返回结果的情况下,通过复制本地对象来构造临时对象。

对我来说,在C++ FAQ Lite的这些部分中有一些关于这个主题的有趣的细节。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3976935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档