一、scoped_ptr包装了new操作符在堆上分配的动态对象,能够保证动态创建的对象在任何时候都可以被正确地删除。但scoped_ptr的所有权更加严格,不能转让,一旦scoped_ptr获取了对象的管理权,你就无法再从它哪里取回来。
从名字上看就可以看出,这个智能指针只能在本地作用域里使用,不希望被转让。
二、scoped_ptr类摘要
template<class T>
class scoped_ptr{
private:
T* px; //原始指针
scoped_ptr(scoped_ptr const &); //拷贝构造函数私有化
scoped_ptr &operator=(scoped_ptr const &); 赋值操作符私有化
public:
explicit scoped_ptr(T* p=0); //显式构造函数
explicit scoped_ptr(std::auto_ptr<T> p); //从auto_ptr构造函数
~scoped_ptr(); //析构函数
void reset(T* p=0); //重置智能指针
T &operator*() const; //操作符重载
T *operator->() const; //操作符重载
T *get() const; //获得原始指针
operator bool() const; //bool值转型
void swap(scped_ptr & b); //交换指针
};
三、