c++ - 添加 unique_ptr 作为类的实例字段,而不是显式删除复制/赋值构造函数

标签 c++ c++11 copy-constructor unique-ptr

有一些宏可以防止类被复制,例如: Macros to disallow class copy and assignment. Google -vs- Qt

如果我的类中有一个 unique_ptr,我会得到相同的结果吗?如果是这样,是否有理由不这样做?例如

class Foo {
  private:
    std::unique_ptr<int> DISABLE_COPY;
};

最佳答案

禁止宏实际上是为 C++98/03 设计的。 C++11 具有用于消除复制/赋值的 = delete 运算符。添加 unique_ptr 会使您的类有点膨胀,但更糟糕的是,我认为这只是实现已删除复制/分配的一种非常迂回且不明确的方式。

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

将非常清楚地实现这些结果。

关于c++ - 添加 unique_ptr 作为类的实例字段,而不是显式删除复制/赋值构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30533563/

相关文章:

c++ - 返回堆栈变量?

c++ - 如何阻止 TensorFlow 多线程

c++ - std::bind():以右值引用作为参数绑定(bind) lambda

c++ - 复制构造函数+浅复制和深复制

c++ - 这段代码中调用了哪个构造函数或赋值运算符?

c++ - 为什么 boost::any 禁止转发 const&&?

c++ - 无法使用 Visual Studio 2015 构建简单项目

c++ - 在堆栈上声明对象的两种方式之间的区别

c# - 如何在 Windows 上正确检索与扩展关联的打开命令?

c++ - 分配给已删除/未初始化的对象