我正在学习 C++(来自 iOS),我想了解指针/引用的用法。
在删除对象时使用对象的引用是否正确?或者引用的变量也会被删除吗?
示例:
Class Foo {
}
Class Faa{
asyncCall(&Foo)
}
1.
// ...
Foo *foo = new Foo();
faa->(asyncCall(&foo);
delete foo;
// ...
2.
// ...
Foo *foo = new Foo();
Foo& refFoo = foo;
delete foo;
// do something with refFoo
最佳答案
由于您的代码示例是乱码,我会摆出自己的样子:
Foo* foo = new Foo();
Foo& ref = *foo;
delete foo;
// Use refFoo
这很糟糕。引用只是引用在别处创建的对象。在此示例中,*foo
和 ref
是完全相同的对象。一旦您通过执行 delete foo;
销毁该对象,ref
就会悬空。它指的是一个不再存在的对象。访问它将导致未定义的行为。
关于已删除对象的 C++ 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15294494/