已删除对象的 C++ 引用

标签 c++ object reference

我正在学习 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

这很糟糕。引用只是引用在别处创建的对象。在此示例中,*fooref 是完全相同的对象。一旦您通过执行 delete foo; 销毁该对象,ref 就会悬空。它指的是一个不再存在的对象。访问它将导致未定义的行为。

关于已删除对象的 C++ 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15294494/

相关文章:

c++ - SetupDiGetDeviceProperty 使用示例

c++ - 计算常量的函数的编译时评估

C++ 创建子矩阵

java - 缺少依赖项时的对象实例化(Java)

php - $a = new $b() 在 PHP 中是什么意思?

C++ 我应该使用指针还是引用?

c++ - 使用 C++ 格式化字符串的自然方式

javascript - 函数中的对象不起作用

c++ - 为什么不调用具有const引用返回值的重载方法?

go - 避免 Go 复制接口(interface)数据