gpt4 book ai didi

c++ - dynamic_cast 如何失败?

转载 作者:IT老高 更新时间:2023-10-28 22:18:05 29 4
gpt4 key购买 nike

根据我的阅读,执行错误的运行时 dynamic_cast 可能会抛出 bad_cast 异常或返回零。

如果你正在转换指针,它会返回零是否正确?

即:

class Base { virtual void a(){} };
class Derived: public Base {};

int main () {
Base *base = new Base();
dynamic_cast<Derived*>(base);
return 0;
}

而且它会在转换对象时抛出一个 bad_cast 异常?

即:

class Base { virtual void a(){} };
class Derived: public Base {};

int main () {
Base base;
Base& ref = base;
dynamic_cast<Derived&>(ref);
return 0;
}

最佳答案

dynamic_cast如果您正在转换指针,则会在错误转换时返回 NULL;它会抛出 std::bad_cast转换引用时。尝试使用 dynamic_cast 强制转换 objects 是编译时错误。 (例如,使用 dynamic_cast<Derived>(base) )

关于c++ - dynamic_cast 如何失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7238069/

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