是否有std :: noncopyable(或等效的)?

时间:2015-08-11 11:45:17

标签: c++ standard-library

有一个boost::noncopyable,我的库中有自己的不可复制的类。在最新的C ++标准中是否存在std :: noncopyable或等效的敲门声?

这是一件小事,但是从这样的课程中得出的意图更加清晰。

2 个答案:

答案 0 :(得分:14)

不,因为有一种标准方法可以使类不可复制:

class MyClass
{
   MyClass(const MyClass&) = delete;
   MyClass& operator=(const MyClass&) = delete;
}:

但是,通过从MyClass&&重载构造函数,可以使不可复制的类可移动。

使该类不可复制的声明(上述)可以在公共或私人部分。

答案 1 :(得分:12)

我确定你已经通过阅读CashCow的帖子弄明白了,但我想我也可以为不可复制的课程提供基类。

class Noncopyable {
public:
    Noncopyable() = default;
    ~Noncopyable() = default;

private:
    Noncopyable(const Noncopyable&) = delete;
    Noncopyable& operator=(const Noncopyable&) = delete;
};