问题描述
在删除对象后,可以像本例中所示使用ref
还是不安全?
struct Object
{
int value;
};
void function()
{
Object* object = new Object();
int& ref = object->value;
delete object;
ref = 50;
}
解决方法
这是不安全的。
任何使用指针或引用被破坏对象的成员都是未定义的行为。
,不,您不能。 Object::value
是Object
的子对象。销毁*object
也将销毁object->value
。在delete object;
之后,引用不再引用有效对象,并且ref
值的任何使用都是未定义的行为。