C 11 智慧型指標

2021-08-07 01:16:16 字數 1209 閱讀 6276

c++11中有unique_ptr、shared_ptr與weak_ptr等智慧型指標(smart pointer),定義在 memory 中。可以對動態資源進行管理,保證任何情況下,已構造的物件最終會銷毀,即它的析構函式最終會被呼叫。

unique_ptr持有對物件的獨有權,同一時刻只能有乙個unique_ptr指向給定物件(通過禁止拷貝語義、只有移動語義來實現)。

unique_ptr指標本身的生命週期:從unique_ptr指標建立時開始,直到離開作用域。

離開作用域時,若其指向物件,則將其所指物件銷毀(預設使用delete操作符,使用者可指定其他操作)。

#include 

#include

using

namespace

std;

int main()

執行結果如下:

shared_ptr允許多個該智慧型指標共享第「擁有」同一堆分配物件的記憶體,這通過引用計數(reference counting)實現,會記錄有多少個shared_ptr共同指向乙個物件,一旦最後乙個這樣的指標被銷毀,也就是一旦某個物件的引用計數變為0,這個物件會被自動刪除。

weak_ptr是為配合shared_ptr而引入的一種智慧型指標來協助shared_ptr工作,它可以從乙個shared_ptr或另乙個weak_ptr物件構造,它的構造和析構不會引起引用計數的增加或減少。沒有過載 * 和 -> 但可以使用lock獲得乙個可用的shared_ptr物件

weak_ptr的使用更為複雜一點,它可以指向shared_ptr指標指向的物件記憶體,卻並不擁有該記憶體,而使用weak_ptr成員lock,則可返回其指向記憶體的乙個share_ptr物件,且在所指物件記憶體已經無效時,返回指標空值nullptr。

C 11智慧型指標

本文介紹c 的四種智慧型指標,其中後三種是c 11新增加的,auto ptr已被棄用。要編譯c 11,需要安裝g 4.8 sudo add apt repository ppa ubuntu toolchain r test sudo apt get update sudo apt get inst...

c 11 智慧型指標

如果在程式中使用new從堆 自由儲存區 分配記憶體,等到不需要時,應使用delete將其釋放。c 引入了智慧型指標auto ptr,以幫助自動完成這個過程。c 11摒棄了auto ptr,並新增了三種智慧型指標 unique ptr,shared ptr,weak ptr。一.auto ptr,un...

c 11 智慧型指標

首先來看shared ptr,先貼一小部分vs2013裡的實現 template class shared ptr template class shared ptr public ptr base ty template explicit shared ptr ux px template cla...