gpt4 book ai didi

已删除对象的 C++ 引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:22:41 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com