欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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é)

上面的問題, 其實(shí)是沒有掌握智能指針的成員函數(shù)的確切語(yǔ)義, 當(dāng)然, 原因可能很復(fù)雜, 比如教材就說不明白, 或者望文生義, 沒仔細(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)文章!

相關(guān)文章

  • C++日期類運(yùn)算符重載方式

    C++日期類運(yùn)算符重載方式

    這篇文章主要介紹了C++日期類運(yùn)算符重載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 深入解讀C++ 內(nèi)聯(lián)函數(shù)inline|nullptr

    深入解讀C++ 內(nèi)聯(lián)函數(shù)inline|nullptr

    內(nèi)聯(lián)函數(shù):用** inline 修飾的函數(shù)叫做內(nèi)聯(lián)函數(shù),編譯時(shí)C++編譯器會(huì)在調(diào)用的地方展開內(nèi)聯(lián)函數(shù)**,這樣調(diào)用內(nèi)聯(lián)函數(shù)就需要?jiǎng)?chuàng)建棧楨,就提高效率了,這篇文章給大家介紹C++ 內(nèi)聯(lián)函數(shù)inline|nullptr的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法

    C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法

    這篇文章講給大家詳細(xì)介紹一下C++利用inotify+epoll實(shí)現(xiàn)異步文件監(jiān)控的方法,inotify是一種異步文件監(jiān)控機(jī)制,文章通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-08-08
  • C語(yǔ)言 語(yǔ)義陷阱超詳細(xì)梳理總結(jié)

    C語(yǔ)言 語(yǔ)義陷阱超詳細(xì)梳理總結(jié)

    這篇文章主要介紹了C語(yǔ)言常見的一些語(yǔ)義陷阱,梳理的比較全面,對(duì)我們做開發(fā)的過程中有一定幫助,感興趣的朋友快來看看吧
    2022-03-03
  • C語(yǔ)言中的二叉樹和堆詳解

    C語(yǔ)言中的二叉樹和堆詳解

    這篇文章主要介紹了C語(yǔ)言中的二叉樹和堆詳解,樹是一種非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n>=0)個(gè)有限結(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合,把它叫做樹是因?yàn)樗雌饋硐褚豢玫箳斓臉洌簿褪钦f它是根朝上,而葉朝下的,需要的朋友可以參考下
    2023-07-07
  • C語(yǔ)言小游戲之簡(jiǎn)易版三子棋(棋盤可自由擴(kuò)展)

    C語(yǔ)言小游戲之簡(jiǎn)易版三子棋(棋盤可自由擴(kuò)展)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)三子棋游戲,還可以自由擴(kuò)展棋盤大小,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++中拷貝構(gòu)造函數(shù)的使用

    C++中拷貝構(gòu)造函數(shù)的使用

    大家好,本篇文章主要講的是C++中拷貝構(gòu)造函數(shù)的使用,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • C++超詳細(xì)講解隱藏私有屬性和方法的兩種實(shí)現(xiàn)方式

    C++超詳細(xì)講解隱藏私有屬性和方法的兩種實(shí)現(xiàn)方式

    為了避免因?yàn)閷㈩悗?kù)中的私有成員開放給類的使用方而導(dǎo)致的軟件邏輯外泄,因此需要將對(duì)外代碼中的私有成員隱藏起來,下面我們來了解一下隱藏私有屬性和方法的兩種實(shí)現(xiàn)方式
    2022-05-05
  • C語(yǔ)言實(shí)現(xiàn)找出二叉樹中某個(gè)值的所有路徑的方法

    C語(yǔ)言實(shí)現(xiàn)找出二叉樹中某個(gè)值的所有路徑的方法

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)找出二叉樹中某個(gè)值的所有路徑的方法,針對(duì)數(shù)據(jù)結(jié)構(gòu)中二叉樹的實(shí)用操作技巧,需要的朋友可以參考下
    2014-09-09

最新評(píng)論