c++ - 函数返回另一个函数的返回值

标签 c++ function vector return-value

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

相关文章:

c++ - 切片 C 数组创建 C++ vector ,每 3 个元素仅保留 2 个元素

php - 如何计算页面加载时有多少查询?

Javascript:导出带有引用函数的对象的数组

javascript - OpenLayers 3 中的自定义矢量形状标记

c++ - 计算一个词在 map 中出现的次数 - 使用 transform() - 调用不匹配

c++ - 返回右值与按值返回本地对象

c++ - libcurl SMTP 读取函数返回有趣的值段错误 C++

c++ - 需要有关在 C++ 中有效操作内存的建议吗?

c++ - 如何使用函数区分名称之间的分数

c++ - 使用 std::sort 在自定义类 C++ 中对 vector 进行排序