码迷,mamicode.com
首页 > 其他好文 > 详细

Weak Pointer 和 SharedPointer的一点区别

时间:2014-11-13 19:12:20      阅读:1779      评论:0      收藏:0      [点我收藏+]

标签:qt qsharepointer qweakpointer 多实例共享单一数据源

Qt 

WeakPointer 记录指针,并在指针对象被删除时,将指针设为NULL;但不管理墙引用(对指针对象的引用)计数;

SharePointer 同WeakPointer,但会管理引用计数,计数为0时,会删除指针对象,同时也设置指针为NULL。


使用情景:

有一个数据源,由多个编辑器共享。设计者希望在有编辑器被创建的时候,创建改数据源,后续新创建的编辑器则使用前面已经创建好的数据源。等最后一个编辑器销毁的时候,一并销毁数据源。

class Source
{
}
class Editor
{
public:
    Editor();
private:
    static QWeakPointer<Source> s_source; // store the created source object;
    QSharedPointer<Source> m_sharedSource; // local used pointer
 }
static WeakPointer<Source> Editro::s_source;
Editro() 
{
    if (s_source.isNull()) {
        m_shardSource = QSharedPointer<Source>(new Source);
        s_source = m_shardSource;
    } else {
        m_sharedSource = s_source.toStrongRef();
    }
}


Weak Pointer 和 SharedPointer的一点区别

标签:qt qsharepointer qweakpointer 多实例共享单一数据源

原文地址:http://lightingmusic.blog.51cto.com/7672137/1576109

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!