gpt4 book ai didi

c++ - 返回本地是否还涉及为返回创建临时文件?

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:13 24 4
gpt4 key购买 nike

我来自 Java,那里任何东西都是引用,所以我想弄清楚 C++ 实例创建的基础知识。

Employee getEmp(int a) {
Employee local(a);
return local;
}
Employee myEmp = m.getEmp(10);

有3次Employee实例化(没有RVO)是否正确?
1 - 创建本地拷贝
2 - 临时创建用于绑定(bind)到引用)
3 - 创建 myEmp

为什么需要第2步?为什么不直接复制本地到myEmp?

如果我打算只使用 Ubuntu,我应该依靠 RVO 吗?我是否更正了 RVO 只创建了两个实例(在第 2 步中不需要)?

谢谢!!!

最佳答案

没有 RVO/NRVOcopy elision 有一个 Employee(int) 调用和两个 copy c- tor,一个在返回时,一个在构造 myEmp 时。使用 RVOcopy elision - 一次调用 Employee(int) 并且可能零次调用复制 c-tor。

没有copy elision 的复制构造函数的第二次调用是强制性的,因为您想从另一个对象构造新对象(使用copy c-tor)。

关于c++ - 返回本地是否还涉及为返回创建临时文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12686952/

24 4 0
文章推荐: C++ 指针 vector 和引用变量
文章推荐: codeigniter 中的 php 舍入
文章推荐: html - 100% 高度和宽度、CSS 和动态内容
文章推荐: HTML 适合其内容的高度