智能指针
概述
- 指针指针分类: std::unique_ptr, std::shared_ptr, std::weak_ptr.使用它们需要包含头文件
- C++11 新增了 std::make_shared() 方法创建一个 std::shared_ptr 对象,却没有提供相应的 std::make_unique() 方法创建一个 std::unique_ptr 对象,这个方法直到 C++14 才被添加进来.
- std::unique_ptr 是独占所有权的智能指针, 确保同一时间只能有一个 unique_ptr指向对象. 不能进行拷贝操作,但是可以通过移动操作将所有权转移给其它指针.
- std::shared_ptr 允许多个指针共享同一个对象的所有权,通过引用计数来管理共享资源,当最后一个指向该对象的指针被销毁时,对象会被自动释放.
- std::weak_ptr 是一种弱引用的智能指针, 不拥有对象的所有权, 不会影响对象的生命周期,通常用于解决循环引用问题.配合 std::shared_ptr 的使用,解决循环引用的问题.
- std::auto_ptr 是C++98标准引入的智能指针, 也实现了对对象的独占所有权, 但在复制操作时会移动资源.在C++11中被废弃.
参考链接
1.透彻理解C++11 移动语义:右值、右值引用、std::move、std::forward 2.详解c++中的智能指针 3.智能指针与内存管理)