为什么要删除不可复制类型的operator=

Why to delete operator= for noncopyable type?

本文关键字:operator 类型 可复制 删除 为什么      更新时间:2023-10-16

在这个问题中,解决方案是删除Copy CTOR和赋值操作符。我不明白为什么你需要禁用赋值操作符?它可以是不可复制的,但仍然可以转让,对吧?

在定义单例类时也会发生同样的事情。如果只有一个实例,为什么需要禁用分配?:)

这将允许像这样的代理复制:

NotCopyable a, b;
b = a; // Made a copy of a

你不需要拷贝构造,而需要拷贝赋值,这是很不可能的。移动赋值当然是另一种处理方式,例如std::unique_ptr

Singleton基本上是相同的。为什么允许自我赋值?

通常,不可复制的内容也不可分配。在现实生活中,复制是不允许的,而赋值是可以的,我很难想出这样的例子来。

顺便说一下,有很多例子是不可分配的,但可复制的。

复制构造和复制赋值都被认为是复制。

相关文章: