假设我有一个类,其中复制构造函数是私有的且未实现(使对象不可复制)
class NonCopyable {
// whatever
private:
NonCopyable( const NonCopyable&);
void operator=(const NonCopyable&);
};
现在在同一个类的一些成员函数中,我编写了返回该类对象的代码:
NonCopyable NonCopyable::Something()
{
return NonCopyable();
}
这是 RVO 可以介入的情况。
RVO 仍然要求可以访问复制构造函数。由于对复制构造函数的可能调用是在同一个类成员函数中完成的,因此复制构造函数是可访问的。因此,尽管意图是禁止使用复制构造函数,但从技术上讲,RVO 是可能的。
在这种情况下是否允许 RVO?