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

问题描述

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

struct Object
{
    int value;
};

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

解决方法

这是不安全的。

任何使用指针或引用被破坏对象的成员都是未定义的行为。

,

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