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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值