android智能指针的原理
2017-02-13 10:23
225 查看
看android的C++的代码到处都是智能指针:
一直看不懂类似的代码:
sp<ICrypto> makeCrypto() {
sp<IServiceManager> sm = defaultServiceManager();
sp<IBinder> binder = sm->getService(String16("media.drm"));
}
sm是个sp对象,它怎么有成员函数getService?
仔细研究sp的代码:
template<typename T>
class sp {
public:
inline T& operator* () const { return *m_ptr; }
inline T* operator-> () const { return m_ptr; }
inline T* get() const { return m_ptr; }
private:
T* m_ptr;
};
上面应该是重载了 ->运算符,当调用“->”时就是调用了{return m_ptr;}
这样上面的代码就可以理解了。
另外:对象的生命周期是怎样通过sp控制的?
1. 当使用defaultServiceManager()的返回值作为参数构建 sp对象时:
调用了构造函数:其中调用了对象的incStrong函数增加了引用
template<typename T>
sp<T>::sp(T* other)
: m_ptr(other) {
if (other)
other->incStrong(this);
}
2. sm是临时的局部变量,当函数退出时会调用sm的析构函数
一直看不懂类似的代码:
sp<ICrypto> makeCrypto() {
sp<IServiceManager> sm = defaultServiceManager();
sp<IBinder> binder = sm->getService(String16("media.drm"));
}
sm是个sp对象,它怎么有成员函数getService?
仔细研究sp的代码:
template<typename T>
class sp {
public:
inline T& operator* () const { return *m_ptr; }
inline T* operator-> () const { return m_ptr; }
inline T* get() const { return m_ptr; }
private:
T* m_ptr;
};
上面应该是重载了 ->运算符,当调用“->”时就是调用了{return m_ptr;}
这样上面的代码就可以理解了。
另外:对象的生命周期是怎样通过sp控制的?
1. 当使用defaultServiceManager()的返回值作为参数构建 sp对象时:
调用了构造函数:其中调用了对象的incStrong函数增加了引用
template<typename T>
sp<T>::sp(T* other)
: m_ptr(other) {
if (other)
other->incStrong(this);
}
2. sm是临时的局部变量,当函数退出时会调用sm的析构函数
相关文章推荐
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- 老罗 Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析(5)
- Android之chromimu和webkit的智能指针的原理
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针实现原理分析
- Android 智能指针原理
- Android学习 - Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析(3)
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针实现原理分析
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析(2)
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析