template<typename T>
class my_ScopedStr
{
public:
my_ScopedStr(T* ptr = NULL);
~my_ScopedStr();
T& operator*();
T* operator->();
T* get();
private:
my_ScopedStr(my_ScopedStr<T>& ptr);
my_ScopedStr& operator=(my_ScopedStr<T>& ptr);
private:
T* _ptr;
};
template<typename T>
my_ScopedStr<T>::my_ScopedStr(T* ptr=NULL)
:_ptr(ptr)
{
}
template<typename T>
my_ScopedStr<T>::~my_ScopedStr()
{
if (_ptr != NULL)
{
delete _ptr;
}
}
template<typename T>
T& my_ScopedStr<T>::operator*()
{
return *_ptr;
}
template<typename T>
T* my_ScopedStr<T>::operator->()
{
return _ptr;
}
template<typename T>
T* my_ScopedStr<T>::get()
{
return _ptr;
}
模拟实现scoped_ptr
最新推荐文章于 2024-05-12 01:19:59 发布