[Q学习]QT对象模型:标识与值

在Qt的对象模型中,我们需要将一部分QT对C++新增的对象作为标识(identity)而不是值(value)。这里说一下标识和值的区别:值是拷贝的或者分配来的;标识则是克隆来的。克隆意味着建立新的标识,而不仅仅是旧标识的一份拷贝。举个例子,双胞胎是不同的标识(identity),他们看起来是一样的,但是他们有不同的名字,不同的地点,和许多完全不同的社会关系网。
克隆一个标识是比拷贝和分配值更复杂的操作。我们在QT对象模型中看到这样的情形。
一个QT对象:
1 也许有一个独特的QObject::objectName()。如果我们拷贝一个Qt对象,我们将给这份拷贝什么名字?
2 在对象层次中有位置。如果我们拷贝QT对象,这份拷贝将放在何处?
3 可以关联到其他QT对象,来发送或者接受信号,如果们拷贝一个QT对象,我们如何将这些链接转移到拷贝对象上?
4 可以在运行时增加新的属性,这些属相在声明时则没有。如果我们拷贝QT对象,是否拷贝对象包含了原始对象的新增属性?

出于这样的原因,QT对象被作为标识(identity)对待而不是值(value)。标识是被克隆的,不是拷贝或者分配来的,同时克隆一个标识是比复制或者分配值更加复杂的操作。因此,QObject及其所有子类(直接子类或者间接子类)的拷贝构造函数和赋值运算符都是无效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值