0

std::shared_ptr<T>との違いは何std::shared_ptr<T const>ですか?

そして、いつ一方を他方に対して使用しますか?

4

2 に答える 2

10
  • shared_ptr<int>shared_ptr非定数へのですint。あなたはintとを変更することができますshared_ptr

  • shared_ptr<const int>shared_ptrにですconst intconst 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。ジャックを変更することはできません。

于 2013-02-12T03:34:19.840 に答える
-1
shared_ptr<T>

ボンネットの下にT*を格納し、

shared_ptr<T const>

Tconst*を内部に格納します。つまり、あるデータへのポインタとある定数データへのポインタの違いと同じです。

shared_ptrを通常のポインター(参照カウントあり)のように動作させたい場合はshared_ptrを使用し、ref-countedポインターを一定のデータ(変更するつもりのないデータ)に格納したい場合はshared_ptrを使用します。 。)定数データへのポインター(ポイントされたデータは変更できませんが、ポインターは変更できます)と定数ポインター(ポイントされたデータは変更できますが、ポインター自体は変更できません)には違いがあることを思い出してください。 )最後に、定数データへの定数ポインターがあります。ここでは、ポイントされたデータもポインター自体も変更できません。

于 2013-02-12T03:33:55.647 に答える