【发布时间】:2021-01-30 20:39:22
【问题描述】:
我无法找到以下问题的具体答案:
考虑以下代码:
Obj f() {
Obj o2;
return o2;
}
int main() {
Obj o1 = f();
return 0;
}
复制构造函数被激活了多少次没有编译器优化?
万一没有移动构造函数,是不是一次将o2复制到调用函数,另一次构造o1?
如果有有 move 构造函数,是不是一次将o2复制到调用函数,另一次构造o1(第二次是move const)?
【问题讨论】:
-
你能说明
Obj的定义吗? -
这取决于您使用的 C++ 版本。
-
@Brian 这有什么关系?
-
@FrançoisAndrieux 是的,我知道,这不是问题的重点,所以我只是想尽可能少写代码。
-
@YanivK。这很重要,因为我们需要查看
Obj是否有移动构造函数。
标签: c++ copy-constructor return-by-value