私は弱いポインタを理解するためのニコライM. Josuttis氏による「C++標準ライブラリ」本を読んでいました。著者はweak_ptrを持つ必要性の理由を2つ挙げましたが、第2の理由はありません。誰でも簡単な説明と以下の理由の例を挙げることができます(本から引用):C++ 11でweak_ptrが必要なのはなぜですか?
もう1つの例は、明示的に共有するがオブジェクトを所有しない場合に発生します。したがって、オブジェクトへの参照の存続期間が参照するオブジェクトよりも寿命が長いというセマンティクスがあります。ここで、shared_ptrsはオブジェクトを決して解放せず、通常のポインタはそれらが参照するオブジェクトがもはや有効でないことに気付かず、解放されたデータにアクセスする危険性がある。そして、あなたがしたい - ポインタがポインタを所有でない場合、それはどのようなソフトウェアによって削除される可能性がありますを指しているオブジェクトが所有者である:
共有所有権で作成されたオブジェクトのキャッシュを想像してみてください。オブジェクトを不必要に生存させたくないのですが、実際にはまだ生きている限り、キャッシュはオブジェクトに対するハンドルを取得する方法を提供します。 –
これは[link](http://stackoverflow.com/questions/12030650/when-is-stdweak-ptr-useful)助けてくれるかもしれません –
実際には、恐らく本が弱いポインタのために与えた_first_理由それはキャッシュだと思われますが、そうでないかもしれません。 – davidbak