在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  C++  Linux/ C++ 關于運行時 和 編譯時 的問題

C++ 關于運行時 和 編譯時 的問題

C++ 所說的編譯時期確定 和 運行時期確定 我該怎么理解 ,
繼承的靜態(tài)類型 和 動態(tài)類型還挺好理解的 , 靜態(tài)類型編譯時期確定 , 動態(tài)類型運行時確定 。
而到了 關于 unique_ptr 和 shared_ptr 的講解的時候 , shared_ptr 通過第二個參數(shù)傳入自定義的刪除調(diào)用對象的 , 說是運行時的時候才會跳轉到指定的代碼運行 ,
而unqiue_ptr 使用的是模板參數(shù) , 雖然類型是在編譯時期確定 , 但是也需要傳入的第二個參數(shù)是個調(diào)用對象 , 不也是需要運行時才會跳轉到指定的代碼運行么 ,
primer里面為什么說 shared_ptr 是運行時 , 而unqiue 是編譯的時候呢 ?

我發(fā)現(xiàn)primer到了16章往后走都很難了 , 前面感覺還沒有什么難度。

回答
編輯回答
尛曖昧

主要原因就是unique_ptrshared_ptr更輕,沒有運行時負擔,所以unique_ptr的刪除器是編譯期確定的。

兩個unique_ptr即使指向類型相同,若刪除器不同,也屬于不同類型。unique_ptr的刪除器已經(jīng)內(nèi)植于類型,所以不需要存儲一個刪除器對象就知道刪除器在哪?!邦愋蛢?nèi)植”過程是編譯期確定的,刪除過程的代碼的運行當然是運行期運行的。

shared_ptr就不同,構造函數(shù)傳進來一個實實在在的對象,它存儲起來用?!皩ο蟠鎯Α边^程是運行期確定的,刪除過程的代碼的運行當然也是運行期運行的。shared_ptr的靈活性更高。

2017年12月2日 02:52