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

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

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

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

最近看了個問題:智能指針引用計數(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調用reset后, 引用數(shù)為0, 而不是2.

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

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

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

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

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

總結

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

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

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

相關文章

  • C++日期類運算符重載方式

    C++日期類運算符重載方式

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

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

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

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

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

    C語言 語義陷阱超詳細梳理總結

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

    C語言中的二叉樹和堆詳解

    這篇文章主要介紹了C語言中的二叉樹和堆詳解,樹是一種非線性的數(shù)據(jù)結構,它是由n(n>=0)個有限結點組成一個具有層次關系的集合,把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的,需要的朋友可以參考下
    2023-07-07
  • C語言小游戲之簡易版三子棋(棋盤可自由擴展)

    C語言小游戲之簡易版三子棋(棋盤可自由擴展)

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

    C語言實現(xiàn)簡單計算器

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

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

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

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

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

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

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

最新評論