智能指针——实现unique_ptr

之前介绍了auto_ptr实现,但其并不完美,当然也不“智能”,鉴于之前的auto_ptr实现了简单的资源管理权的转移,下面来看一下另一种思想的unique_ptr。

在unique_ptr中为了避免繁琐的拷贝、赋值出现的问题,unique_ptr更像是一个油盐不进的老顽固,别人怎么说,他也不听,直接让别人拿不到自己的东西:C++98中是,将拷贝、赋值定义为private属性;C++11中直接将其delete了。

template <typename T>
class Unique_ptr
{
public:
	Unique_ptr(T* ptr)
		:_ptr(ptr)
	{

	}

	T* operator->()
	{
		return _ptr;
	}

	T& operator.()
	{
		return *_ptr;
	}

	~Unique_ptr()
	{
		if (_ptr)
		{
			delete _ptr;
			_ptr = nullptr;
		}
	}
private:
	//c++98中处理方式
	Unique_ptr& operator=(Unique_ptr<T> const &);
	Unique_ptr(Unique_ptr<T> const &);

	//C++11中的处理方式
	Unique_ptr& operator=(Unique_ptr<T> const &) = delete;
	Unique_ptr(Unique_ptr<T> const &) = delete;

	T* _ptr;
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值