日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/21 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 模板和泛型编程)效率与灵活性的全部內容,希望文章能夠幫你解決所遇到的問題。

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