最新国产好看的视频,伊人天堂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è)問(wèn)題:智能指針引用計(jì)數(shù)為什么不是0?, 問(wèn)將智能指針reset后為何不是引用減一.

代碼說(shuō)明

#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ù)的語(yǔ)義

通過(guò)源碼可能比較好理解:

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), 語(yǔ)句結(jié)束, 臨時(shí)對(duì)象析構(gòu), 引用計(jì)數(shù)減一.

總結(jié)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    大家好,本篇文章主要講的是C語(yǔ)言復(fù)數(shù)的加減及輸出結(jié)構(gòu)體,感興趣的同學(xué)趕快來(lái)看一看吧,對(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 介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C語(yǔ)言中棧的大小設(shè)置方式

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

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

    嘉义市| 花垣县| 新河县| 红安县| 清原| 高密市| 腾冲县| 宝山区| 舞钢市| 磴口县| 阳信县| 中牟县| 宜春市| 化州市| 内乡县| 沙雅县| 若尔盖县| 祁东县| 林口县| 凤庆县| 盐池县| 岳阳市| 白水县| 漯河市| 九寨沟县| 朝阳市| 民勤县| 乐业县| 兴国县| 温宿县| 商丘市| 中牟县| 保康县| 正定县| 武山县| 海伦市| 朔州市| 三台县| 晋城| 通辽市| 平度市|