QPointer的使用浅析
2016-03-10 12:15
309 查看
/article/9681415.html
这篇博文参考了另一篇博文。
输出为
QPinter最大的好处就是自动判断指针是否为空。
当某个指针同时被存放与多个结构中时,可能会在某段代码出被删除,如果使用普通的指针(plain pointer)则无法判断出该指针是否为空(if (pointer==NULL) )不能达到预期功能,为了解决这个问题,QPointer是最好的选择。
这篇博文参考了另一篇博文。
QList<QPointer<QWidget> > alist; QList<QPointer<QWidget> > blist; QPointer<QWidget> w1=new QWidget; QPointer<QWidget> w2=new QWidget; QPointer<QWidget> w3=new QWidget; alist.append(w1); alist.append(w2); alist.append(w3); blist.append(w1); blist.append(w2); blist.append(w3); foreach(QPointer<QWidget> w,alist) { if(w) { qDebug()<<"alist delete"; delete w; } } foreach(QPointer<QWidget> w,blist) { if(w) { qDebug()<<"blist delete--"; delete w; } else qDebug()<<"blist w is NULL--"; }
输出为
Starting F:\exercise\build-untitled17-desktop4_8_5-Debug\debug\untitled17.exe... alist delete alist delete alist delete blist w is NULL-- blist w is NULL-- blist w is NULL-- F:\exercise\build-untitled17-desktop4_8_5-Debug\debug\untitled17.exe exited with code 0
QPinter最大的好处就是自动判断指针是否为空。
当某个指针同时被存放与多个结构中时,可能会在某段代码出被删除,如果使用普通的指针(plain pointer)则无法判断出该指针是否为空(if (pointer==NULL) )不能达到预期功能,为了解决这个问题,QPointer是最好的选择。
相关文章推荐
- Android Volley完全解析(四),带你从源码的角度理解Volley
- 进程和线程的状态
- 《c语言全局变量的用法》
- vps选择
- Spring 实战 第二章 组装Bean
- Android ListView中加入Button导致ItemClick事件失效
- 复制构造函数:形参为const和nonconst的调用情形
- TCP和UDP
- PHP: CGI,FASTCGI,php-fpm,mod_php,mod_cgi,mod_fcgid
- Problem B: C语言习题 学生成绩输入和输出
- Java 压缩图片
- session共享
- 关于百度地图API的地图坐标转换问题
- 【Python】用filter()函数求素数
- javamail 进行邮件发送时报错
- 蓝桥杯练习系统历届试题 翻硬币
- WCF优化的几个常规思路
- FFmpeg的Android平台移植—编译篇
- Genymotion问题二 Initialize Engine: failed
- Problem A: C语言习题 计算该日在本年中是第几天