克隆一个标识是比拷贝和分配值更复杂的操作。我们在QT对象模型中看到这样的情形。
一个QT对象:
1 也许有一个独特的QObject::objectName()。如果我们拷贝一个Qt对象,我们将给这份拷贝什么名字?
2 在对象层次中有位置。如果我们拷贝QT对象,这份拷贝将放在何处?
3 可以关联到其他QT对象,来发送或者接受信号,如果们拷贝一个QT对象,我们如何将这些链接转移到拷贝对象上?
4 可以在运行时增加新的属性,这些属相在声明时则没有。如果我们拷贝QT对象,是否拷贝对象包含了原始对象的新增属性?
出于这样的原因,QT对象被作为标识(identity)对待而不是值(value)。标识是被克隆的,不是拷贝或者分配来的,同时克隆一个标识是比复制或者分配值更加复杂的操作。因此,QObject及其所有子类(直接子类或者间接子类)的拷贝构造函数和赋值运算符都是无效的。