Qt中的智能指针
发布日期:2021-07-01 04:26:09 浏览次数:2 分类:技术文章

本文共 1152 字,大约阅读时间需要 3 分钟。

文章目录

1 Qt中的智能指针

1.1 QPointer

QPointer:

  • 当其指向的对象被销毁时,它会被自动置空。
  • 析构时不会自动销毁所指向的对象。

注意:

QPointer要求所指向的对象必须继承于QObject,底层实现是维护了一个哈希表,具体的细节暂时不进行深入研究。QPointer对象可以和NULL进行直接比较,是因为实现了类型转换函数,如下:operator T * () const。

1.2 QSharedPointer

QSharedPointer:

  • 引用计数型智能指针。
  • 可以被自由的拷贝和赋值。
  • 当引用计数为0时才删除指向的对象。

编程实验:Qt中的智能指针

#include 
#include
#include
class Test : public QObject{
QString m_name;public: Test(const char* name) {
qDebug() << "Hello, " << name << "."; m_name = name; } void print() {
qDebug() << "I'm " << m_name << "."; } ~Test() {
qDebug() << "Goodbye, " << m_name << "."; }};int main(){
QPointer
pt(new Test("D.T.Software")); QPointer
pt1(pt); QPointer
pt2(pt); pt->print(); pt1->print(); pt2->print(); delete pt; qDebug() << "pt = " << pt; qDebug() << "pt1 = " << pt1; qDebug() << "pt2 = " << pt2; qDebug() << endl; QSharedPointer
spt(new Test("Delphi Tang")); QSharedPointer
spt1(spt); QSharedPointer
spt2(spt); spt->print(); spt1->print(); spt2->print(); return 0;}

1.3 Qt中的其它智能指针

在这里插入图片描述


参考资料:

转载地址:https://muzimin.blog.csdn.net/article/details/105042269 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Qt中的QRadioButton
下一篇:事件的等待与通知

发表评论

最新留言

很好
[***.229.124.182]2024年04月30日 18时35分41秒