1.
auto_ptr:可以實作管理對象所有權的轉移。
A = B ; //将B指派給A,則B對象被銷毀(不可再用),其管理的對象資源已轉移到A。
shared_ptr:可以實作管理對象所有權的共享。
unique_ptr:可以實作管理對象所有權的單獨占用。
2.
unique_ptr對象不可以通過複制構造和指派獲得,
但可以通過移動構造和移動指派獲得。
是以函數可以傳回一個unique_ptr對象,因為調用的是移動構造函數。
3.
scoped_ptr是boost庫中智能指針,類似于c++11中unique_ptr.
scoped_ptr, 它能保證在離開作用域之後它所管理對象能被自動釋放。
4.
特點——不能共享控制權
scoped_ptr不能通過其他scoped_ptr共享控制權,
因為在scoped_ptr類的内部将拷貝構造函數和=運算符重載定義為私有的
5.
在以下情況時使用scoped_ptr:
在可能有異常抛出的作用域裡使用指針
函數裡有幾條控制路徑
動态配置設定對象的生存期應被限制于特定的作用域内
異常安全非常重要時(始終如此!)
6.
如果想實作某個類的對象是獨一無二的,
可以将該類的拷貝構造函數和 = 操作符私有化,
這可以避免類對象調用該方法。
但這還不夠嚴謹,因為友元可以通路類的私有成員,是以,
除了将其申明為私有化之外,還應該隻申明,不定義其實作方法。
7.
auto_ptr ,scoped_ptr和unique_ptr都不能用于STL容器,
因為STL容器需要調用對應類的構造函數,并且該構造函數不能改變引用參數(也就是const &)