In this question解决的办法是删除Copy CTOR和赋值运算符。我不明白你为什么需要禁用赋值运算符?它可以是不可复制的,但仍可分配,对吗?为什么要删除operator = for noncopyable type?
当你定义一个单例类时,会发生同样的事情。如果您只有一个实例,为什么需要禁用分配? :)
In this question解决的办法是删除Copy CTOR和赋值运算符。我不明白你为什么需要禁用赋值运算符?它可以是不可复制的,但仍可分配,对吗?为什么要删除operator = for noncopyable type?
当你定义一个单例类时,会发生同样的事情。如果您只有一个实例,为什么需要禁用分配? :)
这将使一些像这样的代理副本:
NotCopyable a, b;
b = a; // Made a copy of a
这是非常不可能的,你不想拷贝构造,但拷贝赋值。移动分配当然是不同的处理,参见例如。 std::unique_ptr
。
辛格尔顿基本上是一样的。为什么允许自我分配?这只是没有意义。
通常,不可复制的东西也不可分配。我很难发明一个真实的例子,在这个例子中,复制是不允许的,但是分配是可以的。
在附注中,有很多例子是不可分配的,但可复制的。
复制构建和复制分配都被认为是复制。
用你自己的话说,你对可分配对象的理解是什么,但不可复制?你想在这种情况下发生什么? – NoseKnowsAll
你仍然会在右边复制这个东西,不是吗? – molbdnilo