您的位置:首页 > 其它

QPointer的使用浅析

2016-03-10 12:15 309 查看
/article/9681415.html

这篇博文参考了另一篇博文。

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是最好的选择。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: