智能指针shared_ptr 与 weak_ptr的区别

weak_ptr是为了解决shared_ptr循环引用的问题,防止双向绑定

1. share_ptr 示例

智能指针shared_ptr 与 weak_ptr的区别_第1张图片
在这里插入图片描述

图解示意

智能指针shared_ptr 与 weak_ptr的区别_第2张图片
可以看出,当ptr_a,ptr_b的释放,并没有导致A,B 类的析构。

2. 对上面 示例的改进:

智能指针shared_ptr 与 weak_ptr的区别_第3张图片
智能指针shared_ptr 与 weak_ptr的区别_第4张图片

图解示意

智能指针shared_ptr 与 weak_ptr的区别_第5张图片
此时两个类对象均析构,同时ptr_a的use_count为2,ptr_b的use_count为1

你可能感兴趣的:(C++,c++)