QObject的拷贝与赋值操作
来源:互联网 发布:导出 excel js 插件 编辑:程序博客网 时间:2024/05/22 12:47
【转自:http://www.myexception.cn/program/851279.html】
QObject 中没有提供一个拷贝构造函数和赋值操作符给外界使用,其实拷贝构造和赋值的操作都是已经声明了的,但是它们被使用了Q_DISABLE_COPY () 宏放在了private区域。因此所有继承自QObject的类都使用这个宏声明了他们的拷贝构造函数和赋值操作符为私有。
为什么要这样做?
我 们都知道Qt对标准C++增加了一些功能:signals, slots, object properties, events, event filters, string translation, timers,object trees, guarded pointers, dynamic cast.
新加入的这些功能就要求我们把每一个QObject的对象看做是唯一(identities)的。唯一的意思就是不能通过拷贝或者赋值操作
制作出一个一模一样的复制体。
试 想如果我们有一个QPushButton对象btnSubmit,如果我们可以复制出一个和btnSubmint完全一样的button对象,那么新的 button对象的名字应该是什么?如果也叫btnSubmit,当我们给其中的btnSubmit接收事件或发出信号时,系统如何区分把事件由哪个 button对象接收,或者哪个对象发送了信号?
我们知道在各种容器中能以value方式存放的类型,必须有默认的构造函数,拷贝构造函数和赋值操作。由于QObject及所有继承自它的子类都没 有提供拷贝构造和赋值操作,当我们使用QList<QObject>时,编译器就会报错。如果我们要在容器中存储这中类型的对象,我们就要使 用它们的指针。如QList<QObject *>
- QObject的拷贝与赋值操作
- QObject 的拷贝构造和赋值操作
- QObject 的拷贝构造和赋值操作
- [Q学习]3 QObject的拷贝构造函数与赋值运算符
- C++对象的拷贝与赋值操作
- C++对象的拷贝与赋值操作
- C++对象的拷贝与赋值操作
- C++对象的拷贝与赋值操作
- C++对象的拷贝与赋值操作
- C++对象的拷贝与赋值操作
- 拷贝构造函数与赋值操作符的具体实现
- 拷贝构造函数与重载赋值操作符的区别
- 拷贝构造与赋值操作(string实例)【写的很棒!】
- 浅谈C++对象的拷贝与赋值操作
- 拷贝构造与赋值操作(string实例)
- 拷贝构造函数与赋值操作
- 拷贝构造函数与赋值操作符
- 拷贝构造函数与拷贝赋值操作符
- JAVA之正则表达式
- vSphere与OpenStack的集成
- (孙鑫 十三) 文档与串行化
- (孙鑫 十四) 网络编程
- 【Java并发编程】之十:使用wait/notify/notifyAll实现线程间通信的几点重要说明
- QObject的拷贝与赋值操作
- openjudge 寻找中位数
- 使用NDK交叉编译ffmpeg, android后台可执行。
- SPRING中属性SCOPE的prototype是什么意思
- (孙鑫 十五)多线程
- 第三周作业归并排序
- windows2003服务---远程访问服务
- Java Web项目(Extjs)报错九
- Hadoop MapReduce两种常见的容错场景分析