首页 > 代码库 > Weak Pointer 和 SharedPointer的一点区别
Weak Pointer 和 SharedPointer的一点区别
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的一点区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。