【发布时间】:2012-04-24 06:16:06
【问题描述】:
我无法理解 RVO(和 NRVO)的定义,因为有多个问题 like this one 在我看来,假设 RVO 省略了复制构造函数。现在根据 12.8.15
在这种情况下,实现将省略的复制操作的源和目标简单地视为引用同一对象的两种不同方式,并且该对象的销毁发生在两个对象将具有没有优化就被销毁了。
看起来不是复制构造函数调用被省略了,而是复制本身 - 只是对象首先在“复制”位置构造,因此没有“原始”对象,根本没有复制。因此,即使一个类有 private 复制构造函数,它也可以在 RVO 启动时从函数中返回,因为没有复制。
我说对了吗?是复制本身省略还是复制构造函数调用省略?当对象类有私有拷贝构造函数时,是否应该允许从函数返回对象?
【问题讨论】:
标签: c++ copy-constructor nrvo rvo