Qt的智能指针使用指南

 

 

Qt提供了很多智能指针的类,比较常见的有QPointer, QSharedDataPointer ,QSharedPointer,QWeakPointer和QScopedPointer等等,它们被引入的Qt版本即描述如下:

 

  1. QPointer (4.0)  已经过时,可以被QWeakPointer所替代,它不是线程安全的。
  2. QSharedDataPointer (4.0)  -- 提供对数据的COPY-ON-WRITE以及浅拷贝,提供对数据(而不是指向数据的指针)的线程安全的保护。(注:提供对数据的线程安全保护要结合QsharedData来完成),它是线程安全的。
  3. QSharedPointer (4.5)    -- 实现了引用计数的可共享资源的强类型指针,它是线程安全的。
  4. QWeakPointer (4.5)      -- 实现了引用计数的可共享资源的弱类型指针,它是线程安全的。
  5. QScopedPointer (4.6)   -- 实现了非引用计数的独享资源的强类型指针,它是线程安全的。

 

strong pointer   在有它所指向的资源的所有权期间,永远不会放弃这个所有权。 

weak pointer在有它所指向的资源的所有权期间,允许外界释放其资源从而使其放弃这个所有权。 

QSharedPointer有着与std::auto_ptr类似的特性,而最大的区别在于它不能转让所有权而auto_ptr可以。事实上,scoped_ptr永远不能被复制或被赋值!

 

 

下面代码使用QSharedPointer,QWeakPointer和QScopedPointer的示例:

 

 

 


如下连接是一篇有关Qt智能指针很好的文章, 

 

https://blog.qt.digia.com/blog/2009/08/25/count-with-me-how-many-smart-pointer-classes-does-qt-have/

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值