C 智慧型指標

2021-08-11 11:37:20 字數 818 閱讀 4319

智慧型指標是儲存指向動態分配(堆)物件指標的類。除了能夠在適當的時間自動刪除指向的物件外,他們的工作機制很像c++的內建指標。智慧型指標在面對異常的時候格外有用,因為他們能夠確保正確的銷毀動態分配的物件。他們也可以用於跟蹤被多使用者共享的動態分配物件。

包含頭義件memory

#include 

#include

#include

class report

~report()

void comment() const

};int main()

return

0;}

(1)如果程式要使用多個指向同乙個物件的指標,應選擇shared_ptr。這樣的情況包括:

有乙個指標陣列,並使用一些輔助指標來標示特定的元素,如最大的元素和最小的元素;

兩個物件包含都指向第三個物件的指標;

stl容器包含指標。

很多stl演算法都支援複製和賦值操作,這些操作可用於shared_ptr,但不能用於unique_ptr(編譯器發出warning)和auto_ptr(行為不確定)。如果你的編譯器沒有提供shared_ptr,可使用boost庫提供的shared_ptr。

(2)如果程式不需要多個指向同乙個物件的指標,則可使用unique_ptr。如果函式使用new分配記憶體,並返還指向該記憶體的指標,將其返回型別宣告為unique_ptr是不錯的選擇。這樣,所有權轉讓給接受返回值的unique_ptr,而該智慧型指標將負責呼叫delete。可將unique_ptr儲存到stl容器在那個,只要不呼叫將乙個unique_ptr複製或賦給另乙個演算法(如sort())

c 智慧型指標

auto prt 它是 它所指向物件的擁有者 所以當自身物件被摧毀時候,該物件也將遭受摧毀,要求乙個物件只有乙個擁有者,注意 auto prt 不能使用new 來分配物件給他 include include using namespace std template void bad print au...

c 智慧型指標

很久沒寫部落格了,不知道如何表達了,哈哈.我先介紹一下深淺拷貝.class copy 此時a.ptr和b.ptr指向同乙個物件,當我們delete a.ptr時 b.ptr所指向的物件已經不存在了,要是我們引用b.ptr指向的物件也就會出問題了.深拷貝 把a.ptr所指向的物件拷貝乙份給b.ptr ...

c 智慧型指標

記得前不久有一次面試被問到智慧型指標的實現,當時對智慧型指標只是聽說但沒有了解過,就亂七八糟地說了一遍。今天寫了一遍智慧型指標,用了引用計數的概念。主要思想就是,用乙個新類對原本需要的型別進行了一層封裝,這個新類中儲存了原本的物件指標和乙個引用計數的指標,之所以全部用指標來儲存,就是因為會出現多個新...