看了源码,才发现,内存管理就是用智能指针和引用计数来实现的。
class object
{
public:
void register()
{
++m_reference;
}
void unRefister()
{
if(!(--m_reference))
delete this;
}
private:
int m_reference;
}
template <T>
class smartPoint<T>
{
public:
typedef smartPoint<T> self
void register()
{
m_point->register();
}
void unRefister()
{
m_point->unRegister();
}
void operator =(self& right);
private:
m_point;
}
简化起来大概就是这样,smartPoint负责把对象(指针)封装起来,可以完全把smartpoint当作局部变量来使用,。外部释放对a的引用时,引用计数就会减一,反之加一。外部有引用对象a的时候&#x