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を呼び出すことによって)変更することはできませんが、それが指すように変更することはできますresetint
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を使用します。 。)定数データへのポインター(ポイントされたデータは変更できませんが、ポインターは変更できます)と定数ポインター(ポイントされたデータは変更できますが、ポインター自体は変更できません)には違いがあることを思い出してください。 )最後に、定数データへの定数ポインターがあります。ここでは、ポイントされたデータもポインター自体も変更できません。