设为首页 加入收藏

TOP

3.3.1 类摘要
2013-10-07 13:13:47 来源: 作者: 【 】 浏览:69
Tags:3.3.1 摘要

3.3  scoped_array

scoped_array很像scoped_ptr,它包装了new[]操作符(不是单纯的new)在堆上分配的动态数组,为动态数组提供了一个代理,保证可以正确地释放内存。

scoped_array弥补了标准库中没有指向数组的智能指针的缺憾。

3.3.1  类摘要

scoped_array的类摘要如下:

  1. template<class T> class scoped_array        //noncopyable  
  2. {  
  3. public:  
  4.       explicit scoped_array(T * p = 0);  
  5.       ~scoped_array();  
  6.  
  7.       void reset(T * p = 0);  
  8.       T & operator[](std::ptrdiff_t i) const;  
  9.       T * get() const;  
  10.  
  11.       operator unspecified-bool-type() const;  
  12.       void swap(scoped_array & b);  
  13. }; 

scoped_array的接口和功能几乎是与scoped_ptr是相同的(甚至还要少一些),主要特点如下:

构造函数接受的指针p必须是new[]的结果,而不能是new表达式的结果;

没有*、->操作符重载,因为scoped_array持有的不是一个普通指针;

析构函数使用delete[]释放资源,而不是delete;

提供operator[]操作符重载,可以像普通数组一样用下标访问元素;

没有begin()、end()等类似容器的迭代器操作函数。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.4.1 类摘要 下一篇3.4.4 工厂函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: