首先提出: scoped_ptr是boost库中对这个只能指着的叫法,unique_ptr是C++11标准库中对这个智能指针的叫法
上一篇我们讲解了智能指针中的auto_ptr,但是auto_ptr中还是有很大的缺陷,于是在boost库中,各位民间大佬提出了另外几种智能指针,分别是 scoped_ptr,shared_ptr,还有配合shared_ptr使用的weak_ptr
这一片我们讲解一下scoped_ptr的原理及其用法
scoped_ptr
我们看到,在之前的auto_ptr中最大的缺陷就在于拷贝构造和赋值运算符的重载这两个函数中,所以scoped_ptr就想了一个比较绝对的方法,就是禁止我们使用拷贝构造和赋值运算符的重载。
下面给出三种防拷贝的方法,我们观察一下
防拷贝系列1
-
思想: 将拷贝构造函数和赋值运算符的重载都在类中声明,并给出一个空的定义
template<class T>
class ScopedPtr
{
public:
ScopedPtr(T* ptr = nullptr):_ptr(ptr)
{}
~ScopedPtr()
{
if(_ptr)
{
delete _ptr;
_ptr = nullptr;
}
}
ScopedPtr(const ScopedPtr<T>& ap){}
ScopedPtr<T>& operator=(const ScopedPtr<T>&