2013-08-21 248 views
0

我是C++的新手。我所遇到的std ::的unique_ptr和std :: shared_ptr的的使用在我的代碼C++中std :: unique_ptr和std :: shared_ptr的區別

typedef std::unique_ptr<type1> type1Handler; 
typedef std::shared_ptr<type2> type2Handler; 

我有兩個問題:

  1. 什麼是使用unique_ptrshared_ptr
  2. 的優勢是什麼他們之間的主要區別是什麼?

可能是一個例子會很有幫助!

+3

你嘗試谷歌呢? –

回答

6

它們用於2個完全不同的用例。

  1. std::unique_ptr保留對象的鞋底所有權並且當所述的unique_ptr超出範圍破壞該對象。沒有兩個unique_ptr的實例可以管理同一個對象。 (http://en.cppreference.com/w/cpp/memory/unique_ptr

  2. std::shared_ptr保留共享對象的所有權。幾個shared_ptr對象可能擁有相同的對象。當擁有對象的最後剩餘的shared_ptr被銷燬時,對象被銷燬並且其內存釋放,或者擁有對象的最後剩餘的shared_ptr通過operator=reset()被分配另一個指針。 (http://en.cppreference.com/w/cpp/memory/shared_ptr

爲了強制獨資std::unique_ptr是不可轉讓的,不可複製。這意味着你必須使用移動語義。

如果您在代碼的某個地方看到unique_ptr,這意味着看,這裏是指針,我們擁有它!。關於shared_ptr,我們不能這麼說,所有權可以分散在代碼中。

相關問題