标签: c++ return-value copy-constructor
编译器在C ++中按值返回对象时是否始终调用复制构造函数?
答案 0 :(得分:1)
没有。在某些情况下,允许编译器忽略对复制构造函数的调用。查找RVO(返回值优化)和NRVO(命名返回值优化)。此外,从C ++ 17开始,在某些情况下,此优化保证。
此外,如果返回的类型是可移动的,则编译器可能会在某些情况下执行移动而不是复制。