有一个boost::noncopyable,我的库中有我自己的不可复制类。在最新的C++标准中是否有std::noncopyable或等效的东西?这是一件小事,但从这样一个类派生使意图更加清晰。
sqyvllje1#
不,因为有一种标准的方法可以使类不可复制:
class MyClass { MyClass(const MyClass&) = delete; MyClass& operator=(const MyClass&) = delete; }:
然而,一个不可复制的类可以通过重载MyClass&&的构造函数而变得可移动。使类不可复制的声明(如上所述)可以在public或private部分。如果你真的不想每次都输入所有这些,你可以定义一个宏,比如:
MyClass&&
#define NONCOPYABLE(Type) Type(const Type&)=delete; Type& operator=(const Type&)=delete class MyClass { NONCOPYABLE(MyClass); // etc. };
bzzcjhmw2#
我相信你已经通过阅读CashCow的文章了解了这一点,但我想我也可以为不可复制的类提供一个基类。
class Noncopyable { public: Noncopyable() = default; ~Noncopyable() = default; private: Noncopyable(const Noncopyable&) = delete; Noncopyable& operator=(const Noncopyable&) = delete; };
2条答案
按热度按时间sqyvllje1#
不,因为有一种标准的方法可以使类不可复制:
然而,一个不可复制的类可以通过重载
MyClass&&
的构造函数而变得可移动。使类不可复制的声明(如上所述)可以在public或private部分。
如果你真的不想每次都输入所有这些,你可以定义一个宏,比如:
bzzcjhmw2#
我相信你已经通过阅读CashCow的文章了解了这一点,但我想我也可以为不可复制的类提供一个基类。