我在某处发现了以下代码,我想知道它是否合法在C++中.ret变量是堆栈变量,一旦foo返回分配给ret的内存不再存在.但是string是一个类,我认为复制构造函数被调用来将ret的内容复制到var.这是真的?以下是一段有效的代码吗?
string foo(int x)
{
string ret;
//some operation on ret
return ret;
}
string callingFunc()
{
string var = foo(2);
// some operation on var
}
Run Code Online (Sandbox Code Playgroud)