Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析(3)
提供引用计数器的类RefBase我们就暂时介绍到这里,后面我们再结合智能指针类一起分析,现在先来看看强指针类和弱指针类的定义。强指针类的定义我们在前面介绍轻量级指针的时候已经见到了,就是sp类了,这里就不再把它的代码列出来了。我们来看看它的构造函数的实现: template<typenameT> sp<T>::sp(T*other) :m_ptr(other) { if(other)other->incStrong(this); } 这里传进来的参数other一定是继承于RefBase类的,因此,在函数的内部,它调用的是RefBase类的incStrong函数,它定义在frameworks/base/libs/utils/RefBase.cpp文件中: voidRefBase::incStrong(constvoid*id)const { weakref_impl*constrefs=mRefs; refs->addWeakRef(id); refs->incWeak(id); refs->addStrongRef(id); const...