日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(chap 16 模板和泛型编程)效率与灵活性

發布時間:2025/3/21 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5th笔记(chap 16 模板和泛型编程)效率与灵活性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 標準庫智能指針類型 shared_ptr 和 unique_ptr

shared_ptrunique_ptr
管理所保存的指針的策略共享指針所有權獨占指針
用戶重載默認刪除器的方式在運行時綁定刪除器,使用戶重載刪除器更為方便編譯時綁定刪除器,避免了間接調用刪除器的運行時開銷

1.2 shared_ptr 重載刪除器

  • 在創建或 reset 指針時傳遞給它一個可調用對象。
  • 在一個 shared_ptr 的生存期中, 我們可以隨時改變其刪除器的類型。

1.2.1 類成員的類型在運行時是不能改變的。因此,不能直接保存刪除器。

假定 shared_ptr 將它管理的指針保存在一個成員 p 中, 且刪除器是通過一個名為 del 的成員來訪問的。 則 shared_ptr 的析構函數必須包含類似下面這樣的語句:

// del 的值只有在運行時才知道; 通過一個指針來調用它 del ? del (p ) : delete p; // del (p> 需要運行時跳轉到 del 的地址

由于刪除器是間接保存的,調用 del § 需要一次運行時的跳轉操作, 轉到 del 中保存的地址來執行對應的代碼。

1.3 unique_ ptr刪除器

刪除器的類型是一個unique_ ptr對象的類型的一部分。刪除器成員的類型在編譯時是知道的, 從而刪除器可以直接保存在 unique_ptr 對象中

用戶必須在定義unique_ ptr時以顯式模板實參的形式提供刪除器的類型,有兩個模板參數:

  • 管理的指針
  • 刪除器的類型

unique_ ptr的析構函數與shared_ ptr 的析構函數類似,也是對其保存的指針調用用戶提供的刪除器或執行delete:

//del在編譯時綁定;直接調用實例化的刪除器 del(p); //無運行時額外開銷

del的類型或者是默認刪除器類型,或者是用戶提供的類型。到底是哪種情況沒有關系,應該執行的代碼在編譯時肯定會知道。實際上,如果刪除器是類似DebugDelete (參見16.1.4節,第595頁)之類的東西,這個調用甚至可能被編譯為內聯形式。

總結

以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 16 模板和泛型编程)效率与灵活性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。