C 智慧型指標 unique ptr

2021-10-19 08:23:09 字數 980 閱讀 2957

unique_ptr和auto_ptr類似。

但是unique_ptr擁有它指向的物件。某個時刻只能有乙個unique_ptr指向乙個給定物件。當unique_ptr被銷毀時,它所指向的物件也被銷毀。

必須採用直接初始化形式:

不能呼叫賦值或拷貝建構函式,避免了兩個指標指向同一塊位址的問題,避免了auto_ptr一定的錯誤。

但是仍然可以用其他方法:

int *x = new int(10);

unique_ptrc(x);

unique_ptrd(x);

此時仍然出現了兩個指標指向同一塊位址的問題,仍然會發生錯誤。

我們無法複製 unique_ptr 物件,但我們可以轉移它們。

其實跟auto_ptr的複製一樣,也是將當前的移動給另乙個,只不過這種需要顯式提醒一下。

移動完,原物件也就不能隨便使用了

int *x = new int(10);

unique_ptra(x);

unique_ptrb(move(a));

此時a就不能再使用了,因為物件已經從a轉化到了b身上了

仍然具有get(),reset(),release()的函式:

get()獲取真正位址

reset()釋放之前指向的物件

release()放棄當前指標的控制權

c 智慧型指標 unique ptr

智慧型指標是基於raii機制實現的類 模板 具有指標的行為 過載了operator 與operator 操作符 可以 智慧型 地銷毀其所指物件。c 11中有unique ptr shared ptr與weak ptr等智慧型指標,可以對動態資源進行管理 unique ptr 唯一 擁有其所指物件,同...

C 智慧型指標 unique ptr

unique ptr 唯一 擁有其所指物件,同一時刻只能有乙個unique ptr指向給定物件 通過禁止拷貝語義 只有移動語義來實現 unique ptr指標本身的生命週期 從unique ptr指標建立時開始,直到離開作用域。離開作用域時,若其指向物件,則將其所指物件銷毀 預設使用delete操作...

智慧型指標 unique ptr

unique ptr 是 c 11 提供的用於防止記憶體洩漏的智慧型指標中的一種實現,獨享被管理物件指標所有權的智慧型指標。int main std move是將物件的狀態或者所有權從乙個物件轉移到另乙個物件,只是轉移,沒有記憶體的搬遷或者記憶體拷貝所以可以提高利用效率,改善效能.get函式會返回儲...