C++11智能指针(unique_ptr、shared_ptr、weak_ptr)

论坛 期权论坛 期权     
码农小非   2019-7-13 07:43   2162   0
很多人怕写C/C++ 程序就是因为指针,因为指针给了程序员高度的自由,同样也赋予了高度的责任,稍有不慎就导致内存泄漏。其实写C++ 可以完全不用指针,尤其C++ 11对智能指针作了进一步的升级,在不需要使用任何裸指针的前提下也可以写出高效的C++ 程序。C++ 11中定义了
  1. unique_ptr
复制代码
  1. shared_ptr
复制代码
  1. weak_ptr
复制代码
三种智能指针(smart pointer),都包含在
  1. [/code]头文件中。智能指针可以对动态分配的资源进行管理,保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。
  2. [h3]unique_ptr[/h3]如名字所示,[code]unique_ptr
复制代码
是个独占指针,C++ 11之前就已经存在,
  1. unique_ptr
复制代码
所指的内存为自己独有,某个时刻只能有一个
  1. unique_ptr
复制代码
指向一个给定的对象,不支持拷贝和赋值。下面以代码样例来说明
  1. unique_ptr
复制代码
的用法,各种情况都在代码注释给出。
[code]#include #include #include #include #include void test(){    std::unique_ptr up1(new int(11));   // 无法复制的unique_ptr    // unique_ptr up2 = up1;        // err, 不能通过编译    std::cout
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP