gpt4 book ai didi

c++ - 你能在 C++ 中返回字符串对象的局部变量吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:36:51 24 4
gpt4 key购买 nike

我在某处发现了以下代码,我想知道它在 C++ 中是否合法。 ret变量是栈变量,一旦foo返回,分配给ret的内存就不存在了。但是string是一个类,我觉得是调用copy构造函数将ret的内容复制到var中。这是真的?以下代码有效吗?

    string foo(int x)
{
string ret;
//some operation on ret

return ret;
}
string callingFunc()
{
string var = foo(2);
// some operation on var
}

最佳答案

是的

实际上构造了3个对象:ret由于string ret;,一个临时由于return ret;,和var 从提到的返回的临时构造。

编译器可能会直接从 ret 优化掉临时构造 var

关于c++ - 你能在 C++ 中返回字符串对象的局部变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com