【发布时间】:2019-03-05 08:16:55
【问题描述】:
具有不可复制成员的类也被称为不可复制。从 SO,为了使类不可复制,这些选项是:
- 使用 boost::noncopyable
- 将构造函数和赋值运算符声明为私有。
-
删除复制构造函数。
class foo { private: std::mutex _dummy; };
问题:是否将包含一个虚拟的不可复制成员用于类似目的和简单性?缺点是什么?
【问题讨论】:
-
你标记了这个问题 C++11。有什么原因你不能只
= delete复制构造函数? -
@NicolBolas:谢谢我补充。
-
“是否将包含一个虚拟的不可复制成员用于类似目的和简单性?有什么缺点?” - 不,还不够。你可以编写一个不做任何事情的复制构造函数。
-
总是说出你的意思——添加一个不可复制的对象(特别是像互斥体之类的东西)只会混淆你的代码。只需删除复制构造函数和可能的赋值运算符。
-
@max66 是的,已经够了,只是不可取。