gpt4 book ai didi

c++ - 在析构函数调用后访问成员变量

转载 作者:太空狗 更新时间:2023-10-29 21:41:14 24 4
gpt4 key购买 nike

我有这样的代码:

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 ();
}
};

最佳答案

你的本地 f 指的是 Test 之外的对象,并且 f 将在 test() 期间持续存在> 会,所以是的,它会起作用。

关于c++ - 在析构函数调用后访问成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29352465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com