c++ std::weak_ptr使用笔记
std::weak_ptr 是 C++ 标准库中的智能指针,用于解决 std::shared_ptr 的循环引用问题。它不拥有资源的所有权,而是观察 std::shared_ptr 管理的资源。当需要访问资源时,可以通过 std::weak_ptr 临时获取一个 std::shared_ptr。以下是 std::weak_ptr 的简单使用方法:
1. 基本用法
#include <iostream>
#include <memory>
int main() {
// 创建一个 shared_ptr
std::shared_ptr<int> sharedPtr = std::make_shared<int>(42);
// 创建一个 weak_ptr,观察 sharedPtr
std::weak_ptr<int> weakPtr(sharedPtr);
// 使用 weak_ptr 获取 shared_ptr
if (auto tempSharedPtr = weakPtr.lock()) {
std::cout << "Value: " << *tempSharedPtr << std::endl;
} else {
std::cout << "Resource has been released" << std::endl;
}
// 释放 sharedPtr
sharedPtr.reset();
// 再次尝试获取 shared_ptr
if (auto tempSharedPtr = weakPtr.lock()) {
std::cout << "Value: " << *tempSharedPtr << std::endl;
} else {
std::cout << "Resource has been released" << std::endl;
}
return 0;
}
2. 解决循环引用问题
std::weak_ptr 的主要用途是解决 std::shared_ptr 的循环引用问题。以下是一个示例:
#include <iostream>
#include <memory>

最低0.47元/天 解锁文章
1110

被折叠的 条评论
为什么被折叠?



