3.2.1 类摘要

2013-10-07 13:13:38 · 作者: · 浏览: 74

3.2  scoped_ptr

scoped_ptr是一个很类似auto_ptr的智能指针,它包装了new操作符在堆上分配的动态对象,能够保证动态创建的对象在任何时候都可以被正确地删除。但scoped_ptr的所有权更加严格,不能转让,一旦scoped_ptr获取了对象的管理权,你就无法再从它那里取回来。

scoped_ptr拥有一个很好的名字,它向代码的阅读者传递了明确的信息:这个智能指针只能在本作用域里使用,不希望被转让。

3.2.1  类摘要

scoped_ptr的类摘要如下:

  1. template<class T> 
  2. class scoped_ptr {                          //noncopyable  
  3. private:  
  4.     T * px;  
  5.     scoped_ptr(scoped_ptr const &);  
  6.     scoped_ptr & operator=(scoped_ptr const &);  
  7. public:  
  8.      explicit scoped_ptr(T * p = 0);  
  9.      ~scoped_ptr();  
  10.  
  11.      void reset(T * p = 0);  
  12.  
  13.      T & operator*() const;  
  14.      T * operator->() const;  
  15.      T * get() const;  
  16.  
  17.      operator unspecified-bool-type() const;  
  18.      void swap(scoped_ptr & b);  
  19. };