如何使用C智能指针?

前端之家收集整理的这篇文章主要介绍了如何使用C智能指针?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在使用C一段时间,我仍然对使用智能指针感到非常舒服,我只是在编辑一些使用它们的代码时使用它们,而不是在我自己的代码中(这可能值得说我是学生).

你能解释什么是智能指针的类型,它们如何工作以及何时使用它们?@H_301_3@

此外,在其他人写的接口中接收或传递原始指针时,“协议”是什么?@H_301_3@

谢谢.@H_301_3@

解决方法

C 98没有提供除auto_ptr之外的任何智能指针,这充满了自己的问题. C 0X尝试通过引入更多的品种(shared_ptr,unique_ptr等)来解决这个问题.在此期间,最好的办法是使用Boost.看看可用的各种口味 here. Boost是社区驱动的,经过广泛测试,当然是免费的.有很好的文档,示例代码将帮助您开始使用.

Can you explain what are the types of smart pointers,how do they work and when to use them?@H_301_3@

有一些他们.简而言之:@H_301_3@

scoped_ptr <boost/scoped_ptr.hpp>
Simple sole ownership of single
objects. Noncopyable.@H_301_3@

scoped_array <boost/scoped_array.hpp> Simple sole
ownership of arrays. Noncopyable.@H_301_3@

shared_ptr <boost/shared_ptr.hpp>
Object ownership shared among
multiple pointers. @H_301_3@

shared_array
<boost/shared_array.hpp> Array
ownership shared among multiple
pointers. @H_301_3@

weak_ptr
<boost/weak_ptr.hpp> Non-owning
observers of an object owned by
shared_ptr. @H_301_3@

intrusive_ptr
<boost/intrusive_ptr.hpp> Shared
ownership of objects with an embedded
reference count.@H_301_3@

(这是从Boost文档,并注意到它们也有这样的指针的容器!)@H_301_3@

Also,what is the “protocol” when receiving or passing raw pointers in interfaces written by other people?@H_301_3@

对我而言,最重要的规则是:@H_301_3@

>宪章资格>不要释放我没有分配的东西检查所有权/移动语义的转移@H_301_3@

猜你在找的C&C++相关文章