有一些宏可以防止类被复制,例如: 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/