如果我想调用 Bar()
而不是 Foo()
,Bar()
会返回给我一个拷贝(额外开销) Foo() 返回什么,或者它返回 Foo()
放在临时堆栈中的同一对象?
vector<int> Foo(){
vector<int> result;
result.push_back(1);
return result;
}
vector<int> Bar(){
return Foo();
}
最佳答案
两者都有可能发生。但是,大多数编译器不会在您优化后立即进行复制。
您的代码表明应该有一份拷贝。但是,允许编译器删除任何不改变语义和程序的拷贝。
注意:这就是为什么你永远不应该有一个除了正确复制之外做任何事情的复制构造函数,因为你永远无法确定复制是否会真正完成。
关于c++ - 函数返回另一个函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/166113/