SmartPtr.docVIP

  • 2
  • 0
  • 约3.67千字
  • 约 8页
  • 2016-09-20 发布于重庆
  • 举报
SmartPtr

智能指针产生的目的:因为在C++中,存在非常复杂的指针错误问题,例如,某个对象生成后,指向该对象的指针可能有多个,当我们用delete语句删除其中的一个指针后,对象就被销毁,那么其余指向该对象的指针就会悬空,这样很容易出错内存误,为避免出现这样的问题,出现了智能指针,智能指针有2种构造方法,一种是插入式的还有一种是非插入式的,非插入式指针一般是直接采用裸指针作为参数进行创建,不需要修改现有的对象代码,而插入式是采用一个公用的有数量统计功能的基类来派生需要智能指针的类,相对来说,插入式构造方法将需要更多的额外空间,而且需要修改原类。非插入式智能指针(shared_ptr)可以从裸指针,另一个shared_ptr、一个std::auto_ptr、或者一个boost::weak_ptr来构造,还可以传递第二个参数给shared_ptr的构造函数,它被称为删除器(deleter)。删除器稍后会被调用,来处理共享资源的释放。这对于管理那些不是用new分配也不是用delete释放的资源时非常有用。shared_ptr被创建后,它就可象普通指针一样使用了,除了一点,它不能被显式地删除,列举一个shared_ptr的例子,有时候把对象直接存入容器中有时会有些麻烦,以值的方式保存对象意味着使用者将获得容器中的元素的拷贝,对于那些复制是一种昂贵的操作的类型来说可能会有性能的问题。此外,有些容器,特别是

文档评论(0)

1亿VIP精品文档

相关文档