1.什麼是智能指針?指針
智能指針(SmartPointer),簡單來講,就是用起來像指針,可是很聰明,能夠本身在適當的時候刪除動態分配的對象的指針。對象
2.何時使用智能指針?內存
智能指針主要用於生存期控制和階段控制。好比,在一個類中,若是有指針成員,那麼,若是類寫的不夠當心,就很容易出異常。由於指針指向的動態內存,必須在拷貝構造或者賦值時,複製一份一樣大小的內存。不然,容易引發內存泄漏或者對未定義的指針就行刪除。內存泄漏
3.使用智能指針的優點是什麼?引用
多個對象間能夠共享一份動態內存,而且不須要費心在動態內存的申請和釋放上。關於第一點,我以爲有點像Linux下的文件管理系統的機制。技術
4.智能指針如何實現?異常
智能指針的實現,關鍵技術在於「引用計數「。具體來講,一般有兩種方式:第一,使用輔助類。第二,使用句柄類。咱們一般採用句柄類的方式來實現,緣由是這樣做能夠減小客戶代碼和類代碼之間的耦合性。文件
5.如何使用智能指針?管理
STL庫中的auto_ptr和Boost中的一些智能指針。系統