对象删除后对成员变量的引用是否会损坏?

Mic*_*LoL 0 c++ visual-c++

我可以ref在删除对象后使用,如本例所示还是不安全?

struct Object
{
    int value;
};

void function()
{
    Object* object = new Object();
    int& ref = object->value;
    delete object;
    ref = 50;
}
Run Code Online (Sandbox Code Playgroud)

Hum*_*ler 6

这是不安全的。

任何对已销毁对象成员的指针或引用的使用都是未定义的行为。


cdh*_*wie 6

你不能。Object::value是 的子对象Object。破坏*object也破坏object->value。之后delete object;,引用不再引用有效对象,并且任何使用 的值ref都是未定义的行为。