gpt4 book ai didi

c++ - bad_cast 并不总是从 dynamic_cast 抛出

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:03 24 4
gpt4 key购买 nike

我在为 dynamic_cast 使用异常处理时遇到了一些问题。它不会总是返回 bad_cast

尽管 d1 返回 nullptr 并且编译器向我显示警告,但下面的语句没有向我抛出 bad_cast

derived *d1 = dynamic_cast <derived *> (&base);

但如果我尝试使用以下语句:

derived d1 = dynamic_cast <derived &> (base);

然后它会抛出 std::bad_cast

我是不是遗漏了什么逻辑?类是多态的。

最佳答案

这是这样定义的。

如果要转换为的新类型是指针,则结果为 nullptr 错误。如果它是一个引用,它会抛出一个异常。

参见 http://en.cppreference.com/w/cpp/language/dynamic_cast

If the cast is successful, dynamic_cast returns a value of type new_type. If the cast fails and new_type is a pointer type, it returns a null pointer of that type. If the cast fails and new_type is a reference type, it throws an exception that matches a handler of type std::bad_cast.

关于c++ - bad_cast 并不总是从 dynamic_cast 抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39202932/

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