我有这样的代码:
class Foo {
public:
void blub () {}
};
class Test {
public:
Foo& foo;
Test (Foo& f) : foo (f) {}
void test () {
this->~Test ();
foo.blub ();
}
};
显式调用析构函数后,我Test
类的所有成员变量可能都无法访问,因此调用foo.blub()
无效。如果我将引用存储在局部变量中以避免访问成员变量,那么调用是否可以foo.blub()
保证工作?编译器不能在析构函数调用后优化局部变量并访问成员变量,使其再次无效吗?
class Foo {
public:
void blub () {}
};
class Test {
public:
Foo& foo;
Test (Foo& f) : foo (f) {}
void test () {
Foo& f = foo;
this->~Test ();
f.blub ();
}
};