C++ 智能指针

来源:互联网 发布:mac os x dmg怎么安装 编辑:程序博客网 时间:2024/06/07 23:31


C++ 11 主要有3个智能指针std::unique_ptr、std::shared_ptr和std::weak_ptr

 

Std::unique_ptr 是唯一智能指针,不能够赋值。但是能够通过move函数转移指针指向的对象,被move后原指针则不再指向托管对象

因此,当需要智能指针用于纯 C++对象时,可使用 unique_ptr,而当构造unique_ptr时,可使用 make_unique Helper函数。 

 

Std::shared_ptr 是可以共享的智能指针,通过引用计数的方式记录指针对象被引用的次数。当进行赋值时,2个共享智能指针指向同一个内存块,引用计数增加。当引用计数为零时,才会删除内存控制块

 

Std:week_ptr: 是辅助shared_ptr的指针,因为它不具有普通指针的行为,没有重载operator*->,但可以使用lock获得一个可用的shared_ptr对象,它的最大作用在于协助shared_ptr工作,像旁观者那样观测资源的使用情况.