2012-01-10 8 views

答えて

5

ありがとう:

{ // 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を他のオブジェクトに破壊します。

関連する問題