弱指针主要特点和用途有哪些

弱指针(Weak Pointer)是 C++11 引入的一种智能指针,用于解决 std::shared_ptr 可能引发的循环引用问题。

与 std::shared_ptr 不同的是,弱指针并不增加引用计数,因此不会影响对象的生命周期。

图片[1]-弱指针主要特点和用途有哪些-不念博客

主要特点和用途

不增加引用计数

弱指针不会增加所指向对象的引用计数。

当最后一个强引用(std::shared_ptr)销毁时,无论弱指针是否存在,引用计数都会减少。

不影响对象生命周期

弱指针不会影响所指向对象的生命周期。

当对象被销毁后,弱指针会被自动置空,不再指向任何对象。

用于解决循环引用

当两个或多个对象相互持有对方的 std::shared_ptr,可能形成循环引用,导致对象无法正确释放。

使用弱指针可以打破循环引用,防止内存泄漏。

使用示例

#include
#include

class MyClass;

int main() {
std::shared_ptr ptr1 = std::make_shared();
std::weak_ptr weakPtr = ptr1;

// 使用弱指针获取共享指针
if (auto sharedPtr = weakPtr.lock()) {
std::cout