在BREW里实现智能指针Smart Port[初级]

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

template<class T>

class CTJBrewPtr

{

public:

typedef T element_type;

//ctor

explicit CTJBrewPtr(T *pVal = 0) throw()

{

if(pVal)

m_AutoPtr = pVal;

else

m_AutoPtr = NULL;

i = 0;

}

//copy ctor

CTJBrewPtr(const CTJBrewPtr<T>& ptrCopy) throw()

{

if(ptrCopy)

m_AutoPtr = ptrCopy;

else

m_AutoPtr = NULL;

i = 0;

}

//overloading = operator

CTJBrewPtr<T>& operator=(CTJBrewPtr<T>& ptrCopy) throw()

{

if(ptrCopy)

m_AutoPtr = &ptrCopy;

else

m_AutoPtr = 0;

return m_AutoPtr;

}

//dtor

~CTJBrewPtr()

{

if(m_AutoPtr)

{

delete m_AutoPtr;

}

}

//overloading * operator

T& operator*() const throw()

{

return *m_AutoPtr;

}

//overloading -> operator

T *operator->() const throw()

{

return m_AutoPtr;

}

//function to get the pointer to the class

T *get() const throw()

{

return m_AutoPtr;

}

private:

T *m_AutoPtr;

uint32 i;

};

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有