gpt4 book ai didi

c++ - 在 dynamic_casting 之后删除指针是否安全?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:11 24 4
gpt4 key购买 nike

void foo(MyClass* myClass)
{
BaseClass* pBaseClass = dynamic_cast<BaseClass*>(myClass);
delete myClass; // <-------------- Does this affects on pBaseClass ?
}

一般来说,dynamic_cast 是如何工作的? (它像复制构造函数一样工作吗?)

最佳答案

不,那是安全的。 dynamic_cast 只是一种类型转换——原始指针和转换后的指针都指向同一个对象。

转换后的指针可能会指向一个稍微不同的地址(如果涉及多重继承),但它仍然指向(in)同一个对象 - 不会发生对象复制。

编辑:我的意思是“不安全”,意思是“在您删除 myClass 之后,pBaseClass 是一个悬挂指针”。不过,它仍然是合法代码。非常危险。

关于c++ - 在 dynamic_casting 之后删除指针是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20100360/

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