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

问题描述 投票:17回答:2

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

这是一件小事,但是从这样一个阶级派生出来的意图更加清晰。

c++ standard-library
2个回答
15
投票

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

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

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

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


12
投票

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

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

private:
    Noncopyable(const Noncopyable&) = delete;
    Noncopyable& operator=(const Noncopyable&) = delete;
};
© www.soinside.com 2019 - 2024. All rights reserved.