在C ++中按值返回时是否始终调用复制构造函数

时间:2018-02-17 16:38:13

标签: c++ return-value copy-constructor

编译器在C ++中按值返回对象时是否始终调用复制构造函数?

1 个答案:

答案 0 :(得分:1)

没有。在某些情况下,允许编译器忽略对复制构造函数的调用。查找RVO(返回值优化)和NRVO(命名返回值优化)。此外,从C ++ 17开始,在某些情况下,此优化保证

此外,如果返回的类型是可移动的,则编译器可能会在某些情况下执行移动而不是复制。

相关问题