如果我想调用 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/