In this question解决方法是删除Copy CTOR和赋值运算符。我不明白为什么你需要禁用赋值运算符?它可以是不可复制的,但仍可分配,对吧?
定义单例类时会发生同样的事情。如果只有一个实例,为什么需要禁用赋值? :)
答案 0 :(得分:4)
这将允许某种类似的代理副本:
NotCopyable a, b;
b = a; // Made a copy of a
您不太可能不想复制构造,而是复制分配。移动任务当然是一个不同的交易,参见例如std::unique_ptr
。
Singleton基本相同。为什么允许自我分配?这没有意义。
答案 1 :(得分:1)
通常,不可复制的东西也不可分配。我很难发明一个不允许复制的现实例子,但分配是可以的。
在旁注中,有很多例子可以说是不可转让的,但是可以复制。
答案 2 :(得分:0)
复制构造和复制分配都被视为复制。