【发布时间】:2017-02-09 16:49:18
【问题描述】:
我指的是Refbase.h、Refbase.cpp和StrongPointer.h
在强指针的Android实现中,任何基于强指针的对象都必须继承refbase,即
sp<TheClass> theObj // TheClass must inherit from class RefBase
这个要求可以在sp的方法之一的代码中看到:
template<typename T> sp<T>& sp<T>::operator =(T* other) {
if (other != NULL) {
other->incStrong(this);
}
if (mPtr != NULL) {
mPtr->decStrong(this);
}
mPtr = other;
return *this;
}
为了使对incStrong 或decStrong 的调用不会失败。 . . other 和 mPtr 必须继承 RefBase
问题
为什么要实现sp,使其管理的obj 要求是RefBase 的子对象?甚至没有办法在编译时甚至运行时强制执行此要求。 (好吧,也许if(type()...)
Std library doesn't have such a requirement
...
进一步思考,这是否提供了灵活性的答案?
如果是,这如何提供灵活性?
【问题讨论】:
标签: android c++ c++11 std native