91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在C++中使用弱引用

c++
小樊
84
2024-09-10 16:52:17
欄目: 編程語言

在C++中,弱引用(weak reference)是一種智能指針,它允許你引用一個對象,但不會影響該對象的生命周期

下面是一個簡單的示例,展示了如何在C++中使用std::weak_ptr

#include<iostream>
#include<memory>

int main() {
    // 創建一個shared_ptr,并分配一個整數
    std::shared_ptr<int> sharedPtr = std::make_shared<int>(42);

    // 從shared_ptr創建一個weak_ptr
    std::weak_ptr<int> weakPtr = sharedPtr;

    // 檢查weak_ptr是否有效
    if (auto sharedPtr2 = weakPtr.lock()) {
        std::cout << "Value: " << *sharedPtr2<< std::endl;
    } else {
        std::cout << "weak_ptr is expired"<< std::endl;
    }

    // 重置shared_ptr,使其失效
    sharedPtr.reset();

    // 再次檢查weak_ptr是否有效
    if (auto sharedPtr3 = weakPtr.lock()) {
        std::cout << "Value: " << *sharedPtr3<< std::endl;
    } else {
        std::cout << "weak_ptr is expired"<< std::endl;
    }

    return 0;
}

在這個示例中,我們首先創建了一個std::shared_ptr,并分配了一個整數。然后,我們從shared_ptr創建了一個std::weak_ptr。接下來,我們檢查weak_ptr是否有效,如果有效,則輸出其值。然后,我們重置shared_ptr,使其失效,并再次檢查weak_ptr是否有效。由于shared_ptr已經失效,因此weak_ptr也變為無效狀態。

需要注意的是,當std::weak_ptr變為無效時,你不能直接通過它訪問原始對象。你需要調用lock()方法將其轉換為一個新的std::shared_ptr,然后通過這個std::shared_ptr訪問原始對象。如果std::weak_ptr已經失效,那么lock()方法將返回一個空的std::shared_ptr

0
莱阳市| 北流市| 法库县| 平陆县| 安福县| 巴中市| 彩票| 张家港市| 民权县| 永城市| 长岛县| 乌拉特后旗| 子长县| 镇远县| 新和县| 汕尾市| 沧源| 黄龙县| 绥滨县| 通辽市| 海原县| 周宁县| 福贡县| 依兰县| 沅江市| 柞水县| 阿克苏市| 阿拉善左旗| 贵港市| 湟源县| 平凉市| 思茅市| 萨嘎县| 衡南县| 儋州市| 阜新市| 金昌市| 五原县| 易门县| 黄大仙区| 四会市|