2013-02-12 188 views

回答

10
  • shared_ptr<int>shared_ptr到非const int。您可以修改INT和shared_ptr

  • shared_ptr<const int>shared_ptrconst int。您不能修改const intshared_ptr點,因爲它的const。但是你可以修改shared_ptr本身(分配給它,調用其他非const方法等)

  • const shared_ptr<int>const shared_ptr到一個非const int。你不能修改shared_ptr(通過調用reset或任何非const方法),但你可以修改它指向的int

  • const shared_ptr<const int>const shared_ptrconst int。你不能修改插孔。

+0

'shared_ptr '和'shared_ptr '有區別嗎? – kmccoy 2013-02-12 09:17:10

+0

@kmccoy號就像'const int'和'int const'沒有區別 – David 2013-02-12 15:09:19

-2
shared_ptr<T> 

存儲在引擎蓋下一個T *,而

shared_ptr<T const> 

存儲爲T * const的發動機罩下。因此,它與指向某些數據的指針和指向某些常量數據的指針之間的差異相同。

當你只是希望它像一個常規指針(帶有引用計數)時,你會使用shared_ptr,並且當你想要存儲一個ref-counting指針給某些常量數據時,你會想使用shared_ptr永遠不要修改)。回想一下,指向常量數據的指針(無法修改指向的數據,但可以修改指針)和常量指針(您可以在其中修改指向的數據,但不能修改指針指針本身)。最後,有一個常量指針指向常量數據,在這裏你既不能修改指向的數據也不能指向指針本身。

+2

'指向某些數據的常量指針是錯誤的。它是一些const數據的指針。 – 2013-02-12 03:34:40

+0

Woops!這裏遲到了。編輯。 – bstamour 2013-02-12 03:38:19

相關問題