抛砖引玉篇--scoped_ptr 和 unique_ptr

1.
auto_ptr:可以实现管理对象所有权的转移。 

A = B ;    //将B赋值给A,则B对象被销毁(不可再用),其管理的对象资源已转移到A。

shared_ptr:可以实现管理对象所有权的共享

unique_ptr:可以实现管理对象所有权的单独占用


2.
unique_ptr对象不可以通过复制构造和赋值获得,
但可以通过移动构造和移动赋值获得。
所以函数可以返回一个unique_ptr对象,因为调用的是移动构造函数。

 

3.
  scoped_ptr是boost库中智能指针,类似于c++11中unique_ptr.

  scoped_ptr, 它能保证在离开作用域之后它所管理对象能被自动释放。


4.
  特点——不能共享控制权

   scoped_ptr不能通过其他scoped_ptr共享控制权,
   因为在scoped_ptr类的内部将拷贝构造函数和=运算符重载定义为私有的

 

5.

在以下情况时使用scoped_ptr:

在可能有异常抛出的作用域里使用指针
函数里有几条控制路径
动态分配对象的生存期应被限制于特定的作用域内
异常安全非常重要时(始终如此!)


6.

  如果想实现某个类的对象是独一无二的,
  可以将该类的拷贝构造函数和 = 操作符私有化
  这可以避免类对象调用该方法。
  但这还不够严谨,因为友元可以访问类的私有成员,所以,
  除了将其申明为私有化之外,还应该只申明,不定义其实现方法。


7.
  auto_ptr ,scoped_ptr和unique_ptr都不能用于STL容器,
  因为STL容器需要调用对应类的构造函数,并且该构造函数不能改变引用参数(也就是const &)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值