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