在 C++11 中显式删除了成员函数,从不可复制的基类继承是否仍然值得?
我说的是你私下继承基类的技巧,该基类具有私有或已删除的复制构造函数和复制赋值(例如boost::noncopyable
)。
这个问题中提出的优点是否仍然适用于 C++11?
我不明白为什么有些人声称在 C++11 中使类不可复制更容易。
在 C++03 中:
private:
MyClass(const MyClass&) {}
MyClass& operator=(const MyClass&) {}
在 C++11 中:
MyClass(const MyClass&) = delete;
MyClass& operator=(const MyClass&) = delete;
编辑:
正如许多人所指出的,为私有复制构造函数和复制赋值运算符提供空主体(即 {})是错误的,因为这将允许类本身调用这些运算符而不会出现任何错误。我一开始没有添加 {},但遇到了一些链接器问题,导致我出于某种愚蠢的原因添加了 {}(我不记得当时的情况)。我知道更好知道。:-)