std::shared_ptr<T>
との違いは何std::shared_ptr<T const>
ですか?
そして、いつ一方を他方に対して使用しますか?
shared_ptr<int>
shared_ptr
非定数へのです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
非定数へのですint
。(またはconst以外のメソッドshared_ptr
を呼び出すことによって)変更することはできませんが、それが指すように変更することはできますreset
int
const shared_ptr<const int>
const shared_ptr
にですconst int
。ジャックを変更することはできません。
shared_ptr<T>
ボンネットの下にT*を格納し、
shared_ptr<T const>
Tconst*を内部に格納します。つまり、あるデータへのポインタとある定数データへのポインタの違いと同じです。
shared_ptrを通常のポインター(参照カウントあり)のように動作させたい場合はshared_ptrを使用し、ref-countedポインターを一定のデータ(変更するつもりのないデータ)に格納したい場合はshared_ptrを使用します。 。)定数データへのポインター(ポイントされたデータは変更できませんが、ポインターは変更できます)と定数ポインター(ポイントされたデータは変更できますが、ポインター自体は変更できません)には違いがあることを思い出してください。 )最後に、定数データへの定数ポインターがあります。ここでは、ポイントされたデータもポインター自体も変更できません。