【转】浅析auto_ptr(13)
时间:2025-07-14
时间:2025-07-14
智能指针,auto_prt的基本用法,及其示例
{
reset(__a.release());
return *this;
}
//当auto_ptr对象被销毁时,他无情的销毁了_M_ptr
~auto_ptr() { delete _M_ptr; }
//此处要注意防止_M_ptr为空!
element_type&
operator*() const throw()
{
_GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
return *_M_ptr;
}
//同上
element_type*
operator->() const throw()
{
_GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
return _M_ptr;
}
//返回_M_ptr,指针类型
element_type*
get() const throw() { return _M_ptr; }
//将对象对_M_ptr的控制拿掉,返回另一个对它的指向
element_type*
release() throw()
{
element_type* __tmp = _M_ptr;
_M_ptr = 0;//置0
return __tmp;
}
//如果__p和_M_ptr不一样的话,删除原_M_ptr内容,然后让其指向__p void
reset(element_type* __p = 0) throw()
{
if (__p != _M_ptr)
{
delete _M_ptr;
上一篇:预分解窑操作的体会(二)