gpt4 book ai didi

c++ - 在其他指针中删除其对象后检查指针是否为 NULL

转载 作者:太空宇宙 更新时间:2023-11-04 15:05:26 25 4
gpt4 key购买 nike

我有一个像这样的简单问题!

class1 *a = new class1();
class1 *b = a;

delete a;
a= NULL;

现在我也想检查 b 是否为 NULL(或被删除),但 b 总是指向之前的点所在的位置。当我想使用b时,这是有问题的,但是a之前已经删除了!

if (b){
//do something here
}

感谢阅读!

最佳答案

正如一些人所建议的那样,使用共享指针会使这更容易。

如果您想以原始方式进行操作,这就是为什么 *b 仍然指向 a 的原始值的原因

当您说 class1 *b=a 时,您正在获取 a 的指针值的拷贝。因此,无论您对 a 本身做什么,b 都会保留这个原始值。

如果你想让它随着a一起改变,你需要分配一个对a的引用,或者一个指向a指针的指针

class1 **b = &a;

那么现在,想一想当您取消引用 b 时会发生什么,它指向什么值?

它将指向您原来的 class1 *。所以,一旦你设置了 a=NULL,你现在就有了一个指针 b 指向 a 的值,或者 NULL

关于c++ - 在其他指针中删除其对象后检查指针是否为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16468697/

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