auto ptr 非同尋常

2021-06-20 22:51:29 字數 784 閱讀 8663

auto_ptr是c++標準庫里的所謂智慧型指標。是用來防止記憶體洩漏的一種方式。

它不允許多個指標指向同一塊記憶體,而且能在方法返回時自動釋放所指的記憶體。這樣即使在程式因為異常退出時也能釋放掉所占用的資源,不用造成記憶體洩漏。

std::auto_ptrptr(new classa);

auto_ptr和普通的指標的用法一樣,*是取值,->用來訪問成員,但是它沒有提供指標的數值運算,比如++。而且也不允許通過將普通物件的指標賦值給它來初始化。如:

std::auto_ptrptr1(new classa); 

//ok

std::auto_ptrptr2= new calssa; 

//error

第二個就是非法的,因為auto_ptr不能指向普通指標,只能指向auto_ptr型別。

auto_ptrashape(new shape);

auto_ptracircle(new circle);

ashape=acircle;

auto_ptr採用控制權移交機制,當acircle賦值給ashape時,如果ashape是空的,無論ashape是什麼東西都將被delete掉, 被代之以acircle所指向的東西,acircle被設定為空。

1.auto_ptr不能共享擁有權。

2.不能用於陣列,因為它的析構函式不能呼叫delete.

3.它不是萬能的智慧型指標,比如它不能用來計數,而share_ptr是幹這個的,它允許共享擁有權,會在引用計數為0時自動刪除物件。

4.auto_ptr不能作為容器中的element使用。

有效運用auto ptr

翻譯 elmar 本文發表於1999年10月份的c c users journal,17 10 很多人聽說過標準auto ptr智慧型指標機制,但並不是每個人都天天使用它。這真是個遺憾,因為auto ptr優雅地解決了c 設計和編碼中常見的問題,正確地使用它可以生成健壯的 本文闡述了如何正確運用au...

有效運用auto ptr

翻譯 elmar 本文發表於1999年10月份的c c users journal,17 10 很多人聽說過標準auto ptr智慧型指標機制,但並不是每個人都天天使用它。這真是個遺憾,因為auto ptr優雅地解決了c 設計和編碼中常見的問題,正確地使用它可以生成健壯的 本文闡述了如何正確運用au...

AUTO PTR使用總結

標準auto ptr智慧型指標機制很多人都知道,但很少使用它。這真是個遺憾,因為auto ptr優雅地解決了c 設計和編碼中常見的問題,正確地使用它可以生成健壯的 本文闡述了如何正確運用auto ptr來讓你的 更加安全 以及如何避免對auto ptr危險但常見的誤用,這些誤用會引發間斷性發作 難以...