std::shared_ptr<T>
和std::shared_ptr<T const>
有什麼區別?C++:std :: shared_ptr <T>和std :: shared_ptr <T const>有什麼區別?
什麼時候你會使用一個對另一個?
std::shared_ptr<T>
和std::shared_ptr<T const>
有什麼區別?C++:std :: shared_ptr <T>和std :: shared_ptr <T const>有什麼區別?
什麼時候你會使用一個對另一個?
shared_ptr<int>
是shared_ptr
到非const int
。您可以修改INT和shared_ptr
shared_ptr<const int>
是shared_ptr
到const int
。您不能修改const int
點shared_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_ptr
到const int
。你不能修改插孔。
shared_ptr<T>
存儲在引擎蓋下一個T *,而
shared_ptr<T const>
存儲爲T * const的發動機罩下。因此,它與指向某些數據的指針和指向某些常量數據的指針之間的差異相同。
當你只是希望它像一個常規指針(帶有引用計數)時,你會使用shared_ptr,並且當你想要存儲一個ref-counting指針給某些常量數據時,你會想使用shared_ptr永遠不要修改)。回想一下,指向常量數據的指針(無法修改指向的數據,但可以修改指針)和常量指針(您可以在其中修改指向的數據,但不能修改指針指針本身)。最後,有一個常量指針指向常量數據,在這裏你既不能修改指向的數據也不能指向指針本身。
'指向某些數據的常量指針是錯誤的。它是一些const數據的指針。 – 2013-02-12 03:34:40
Woops!這裏遲到了。編輯。 – bstamour 2013-02-12 03:38:19
'T *'和'const T *'有什麼區別? – 2013-02-12 03:28:54
@MarkGarcia你遺漏了'T const *'(這是多餘的,真實的,但更接近匹配模板參數的形式)。 – WhozCraig 2013-02-12 03:31:48