Ami*_*hum 11 c++ smart-pointers
我已经使用C++一段时间了,我仍然觉得使用智能指针感觉不太舒服,我只是在编辑一些使用它们的代码时一直使用它们,从不在我自己的代码中(可能值得说我是学生).
你能解释什么是智能指针的类型,它们如何工作以及何时使用它们?
另外,在其他人编写的接口中接收或传递原始指针时,"协议"是什么?
谢谢.
dir*_*tly 16
C++ 98不提供任何智能指针,除了auto_ptr它充满了自己的问题.C++ 0X试图通过使在几个多品种(解决这个问题shared_ptr,unique_ptr等等).与此同时,最好的选择是使用Boost.看看这里提供的各种口味.Boost是社区驱动的,经过广泛测试,当然也是免费的.有很好的文档和示例代码可以帮助您入门.
你能解释什么是智能指针的类型,它们如何工作以及何时使用它们?
有很多.简而言之:
scoped_ptr<boost/scoped_ptr.hpp>单个对象的简单唯一所有权.不可复制.
scoped_array<boost/scoped_array.hpp>简单的数组唯一所有权.不可复制.
shared_ptr<boost/shared_ptr.hpp>对象所有权在多个指针之间共享.
shared_array<boost/shared_array.hpp>多个指针之间共享的数组所有权.
weak_ptr<boost/weak_ptr.hpp>shared_ptr拥有的对象的非拥有观察者.
intrusive_ptr<boost/intrusive_ptr.hpp>具有嵌入引用计数的对象的共享所有权.
(这是来自Boost文档并注意到它们也有这样的指针容器!)
另外,在其他人编写的接口中接收或传递原始指针时,"协议"是什么?
对我来说,最重要的规则是:
| 归档时间: |
|
| 查看次数: |
3209 次 |
| 最近记录: |