最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?shared_ptr智能指針reset()使用示例詳解

 更新時(shí)間:2023年08月31日 10:14:01   作者:不停感嘆的老林  
這篇文章主要為大家介紹了C++?shared_ptr智能指針reset()使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

C++ shared_ptr智能指針 reset() 詳解

最近看了個(gè)問題:智能指針引用計(jì)數(shù)為什么不是0?, 問將智能指針reset后為何不是引用減一.

代碼說明

#include <cstdio>
#include <memory>
auto main() -> int
{
    std::shared_ptr<int> ptr = std::make_shared<int>(100);
    auto second = ptr;
    auto third = ptr;
    printf("num = %d, count = %ld\n", *ptr, ptr.use_count());
    ptr.reset();
    printf("ptr count = %ld\n", ptr.use_count());
    printf("second and third count = %ld\n", second.use_count());
    return 0;
}

ptr調(diào)用reset后, 引用數(shù)為0, 而不是2.

reset()函數(shù)的語義

通過源碼可能比較好理解:

void reset() _NOEXCEPT
    {
        shared_ptr().swap(*this);
    }

這是reset()的實(shí)現(xiàn), 用shared_ptr()調(diào)用構(gòu)造一個(gè)臨時(shí)指針, 并將其與調(diào)用reset()的指針對(duì)象(上例中的ptr)進(jìn)行交換, 原對(duì)象指向的資源變?yōu)閚ullptr, 引用計(jì)數(shù)變?yōu)?.

臨時(shí)對(duì)象指向原指針指向的資源(上例中的100), 引用計(jì)數(shù)變?yōu)?(臨時(shí)對(duì)象, second, third), 語句結(jié)束, 臨時(shí)對(duì)象析構(gòu), 引用計(jì)數(shù)減一.

總結(jié)

上面的問題, 其實(shí)是沒有掌握智能指針的成員函數(shù)的確切語義, 當(dāng)然, 原因可能很復(fù)雜, 比如教材就說不明白, 或者望文生義, 沒仔細(xì)看解釋.

可能這也提醒我們, 對(duì)于標(biāo)準(zhǔn)庫文檔要比較熟悉, 對(duì)拿不準(zhǔn)的看下源碼, 或者做些簡單測試 然后再進(jìn)行使用.

以上就是C++ shared_ptr智能指針reset()使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于C++ shared_ptr智能指針reset的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

  • C語言實(shí)現(xiàn)三子棋

    C語言實(shí)現(xiàn)三子棋

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)三子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 一文帶你徹底看懂C++常見排序算法

    一文帶你徹底看懂C++常見排序算法

    在計(jì)算機(jī)科學(xué)中,排序算法是數(shù)據(jù)處理的基礎(chǔ)工具,這篇文章主要介紹了C++常見排序算法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2026-01-01
  • C++ Hjson-cpp處理JSON類型配置文件詳解

    C++ Hjson-cpp處理JSON類型配置文件詳解

    Hjson-Cpp是C++實(shí)現(xiàn)的Hjson解析庫,支持注釋、多行字符串等更友好的語法,適用于配置文件等場景,下面我們就來看看它的具體使用方法吧
    2025-06-06
  • C和C++的區(qū)別詳解

    C和C++的區(qū)別詳解

    這篇文章主要介紹了C和C++之間的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • C語言字符函數(shù)isalnum()和iscntrl()詳解

    C語言字符函數(shù)isalnum()和iscntrl()詳解

    大家好,本篇文章主要講的是C語言字符函數(shù)isalnum()和iscntrl()詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • C語言復(fù)數(shù)的加減及輸出結(jié)構(gòu)體

    C語言復(fù)數(shù)的加減及輸出結(jié)構(gòu)體

    大家好,本篇文章主要講的是C語言復(fù)數(shù)的加減及輸出結(jié)構(gòu)體,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • C++實(shí)現(xiàn)正整數(shù)的四則運(yùn)算表達(dá)式

    C++實(shí)現(xiàn)正整數(shù)的四則運(yùn)算表達(dá)式

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)正整數(shù)的四則運(yùn)算表達(dá)式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C++11 <future>中std::promise 介紹

    C++11 <future>中std::promise 介紹

    這篇文章主要介紹了C++11 <future>中std::promise 介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C語言中棧的大小設(shè)置方式

    C語言中棧的大小設(shè)置方式

    文章介紹了C語言中局部變量存儲(chǔ)在棧中,并討論了避免棧溢出和優(yōu)化棧使用的方法,在STM32開發(fā)中,可以通過修改啟動(dòng)文件或使用STM32CubeMX來設(shè)置棧和堆的大小,同時(shí),通過查看生成的.map文件或.htm文件,可以了解棧的使用情況并進(jìn)行優(yōu)化
    2026-02-02
  • 最新評(píng)論

    河曲县| 凌云县| 舞阳县| 浮梁县| 汉沽区| 吴忠市| 鹤壁市| 江西省| 县级市| 海晏县| 容城县| 盐城市| 萝北县| 建平县| 三江| 汝城县| 五常市| 游戏| 田林县| 南宁市| 石城县| 海淀区| 将乐县| 深水埗区| 江口县| 柏乡县| 乐平市| 高州市| 新龙县| 长海县| 云林县| 泸溪县| 旬邑县| 炎陵县| 托克托县| 清远市| 濮阳县| 西充县| 乾安县| 金沙县| 岚皋县|