2
boost::weak_ptr
の用途の1つが循環依存性を壊すことがわかりました。誰かが私にこの機能を説明するための簡単な具体的な例を教えてもらえますか?boost :: weak_ptrを使用して循環依存を中断する例
は、簡単に言えば、あなたに
boost::weak_ptr
の用途の1つが循環依存性を壊すことがわかりました。誰かが私にこの機能を説明するための簡単な具体的な例を教えてもらえますか?boost :: weak_ptrを使用して循環依存を中断する例
は、簡単に言えば、あなたに
ありがとう:
{ // Enter scope
shared_ptr<A> my_a(new A);
shared_ptr<B> my_b(new B);
my_a->remember_this_b(my_b); // Stores a copy of a smart pointer
my_b->remember_this_a(my_a); // Stores a copy of a smart pointer
} // Leave scope. my_a and my_b are destroyed.
両方これらの関数はshared_ptr
を格納した場合はどちらshared_ptr
がゼロの参照カウントに達してしまうので、オブジェクトは、削除されることはありませんでしょう。
ただし、いずれかがweak_ptr
を使用した場合、weak_ptr
が指すオブジェクトは、スコープを離れるときに破棄されます。そして、それは最後にshared_ptr
を他のオブジェクトに破壊します。