0
我有以下一些類似於:是對象X的毀滅期間對象X仍是有效的weak_ptr
class A {
std::weak_ptr<B> r;
A (std::weak_ptr<B> x) : r(x) {}
~A() {
r.lock();
}
};
class B : std::enable_shared_from_this<B> {
std::shared_ptr<A> r;
foo() {
r = std::make_shared<A>(shared_from_this());
}
};
在B的破壞,〜A()被調用;但它想要回擊被破壞的對象。 忽略這個問題的設計問題是定義的行爲,還是依賴於編譯器?
您能否提供使用示例?一個問題是:一個名爲a的實例獲得了b b的一個實例,並且b對這個a具有弱引用? – Theforgotten
銷燬順序是按照與構造相反的順序完成的,所以'B'仍然是*'valid'*,但是在'r'之後訪問成員將是UB。 – Jarod42
@ tobi303對不起 - 挺對的;問題更新 – UKMonkey