unique ptr優於auto ptr的原因

2021-07-03 08:07:33 字數 494 閱讀 2120

//使用auto_ptr不當的後果

int main()

aptr1將控制權移交給aptr2,然而編譯階段並不認為輸出*aptr1是錯誤的,

然而編譯階段錯誤總比執行階段錯誤要好

int main()

unique_ptr的指標不允許上述賦值,因為uptr1之後的操作可能會導致執行階段失敗

unique_ptr只允許右值賦值,因為右值會立即過期,不會有意想不到的操作

這也是unique_ptr優於auto_ptr之處

*ps : 順便一提,auto_ptr類沒有過載==去判斷是否是nullptr,而unique_ptr可以與nullptr進行比較

*如果想將unique_ptr賦值給其他unique_ptr,可以使用std::move()函式

unique ptr程式設計

示例 電子工業出版社 c primary中文版 第5版 與shared ptr不同的是,某個時刻只能有乙個unique ptr指向乙個給定的物件。當unique ptr被銷毀時,它所指向的物件也被銷毀。此外,沒有類似make shared的標準庫函式返回乙個unique ptr。當我們定義乙個uni...

復合優於繼承

public class testhashsetextends hashset override public boolean add e e override public boolean addall collection c public int getcount public static ...

unique ptr使用總結

includestd unique ptrpname auto pname std make unique hello c 14 support make unique可以用乙個unique ptr初始化另外乙個unique ptr嗎?不可以,但是可以進行所有權轉移 vector可以裝unique ...