3.2 scoped_ptr
scoped_ptr是一个很类似auto_ptr的智能指针,它包装了new操作符在堆上分配的动态对象,能够保证动态创建的对象在任何时候都可以被正确地删除。但scoped_ptr的所有权更加严格,不能转让,一旦scoped_ptr获取了对象的管理权,你就无法再从它那里取回来。
scoped_ptr拥有一个很好的名字,它向代码的阅读者传递了明确的信息:这个智能指针只能在本作用域里使用,不希望被转让。
3.2.1 类摘要
scoped_ptr的类摘要如下:
- template<class T>
- class scoped_ptr { //noncopyable
- private:
- T * px;
- scoped_ptr(scoped_ptr const &);
- scoped_ptr & operator=(scoped_ptr const &);
- public:
- explicit scoped_ptr(T * p = 0);
- ~scoped_ptr();
-
- void reset(T * p = 0);
-
- T & operator*() const;
- T * operator->() const;
- T * get() const;
-
- operator unspecified-bool-type() const;
- void swap(scoped_ptr & b);
- };