Qt 

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

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

使用情景:

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

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