有关已删除对象的C ++参考

Dev*_*der 1 c++ reference object

我正在学习C ++(来自iOS),并且想了解指针/参考用法。

在删除对象上的引用时是否正确?还是引用的变量也会被删除?

例:

Class Foo {
}

Class Faa{
   asyncCall(&Foo)
}
Run Code Online (Sandbox Code Playgroud)

1。

// ...
Foo *foo = new Foo();
faa->(asyncCall(&foo);
delete foo;
// ...
Run Code Online (Sandbox Code Playgroud)

2。

// ...
Foo *foo = new Foo();
Foo& refFoo = foo;
delete foo;

// do something with refFoo
Run Code Online (Sandbox Code Playgroud)

Jos*_*eld 5

由于您的代码示例是乱码,因此我将摆出自己的代码:

Foo* foo = new Foo();
Foo& ref = *foo;
delete foo;

// Use refFoo
Run Code Online (Sandbox Code Playgroud)

这不好。引用只是指在其他地方创建的对象。在这个例子中,*foo和ref是完全相同的对象。只要你摧毁目标,这样做delete foo;,ref是左晃来晃去。它是指不再存在的对象。访问它会导致不确定的行为。