c++ - 抛出没有层次结构的 bad_cast exc

标签 c++ exception

<分区>

是否可以抛出一个 bad_cast 异常而不使任何层次结构或新类不同于 C? main() 无法编辑,唯一可以编辑的是 C 类。我也不能明确抛出 bad_cast。

class C{
    private:
        ...

    public:
        void f(){
        ...
        }
};


int main () {
    C c;
    c.f();

}

提前致谢

最佳答案

,你不能。

dynamic_cast 仅适用于多态类类型,C++ 核心语言的内置类型都不是多态类类型。

所以只要你不能定义任何新的多态类(也不能 #include 其他已经存在的多态类的定义),或者不能调用另一个能看到这些定义的函数(这可能应该被视为作弊),您无法获得 bad_cast 异常。

此外,除了抛出 std::bad_cast 异常的 dynamic_cast 之外,没有核心语言构造。所以你的问题的答案:

is it possible to throw a bad_cast exception without making any hierarchy or new classes different from C?

是“”。

关于c++ - 抛出没有层次结构的 bad_cast exc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15876446/

相关文章:

C++:遍历 map

c++ - 函数无法识别我在 C++ 中传递节点指针 vector ?

Java异常和错误处理

c++ - 无法在堆栈上创建 std::list

c++ - 使用涉及 wxFileName 的任何内容时内存泄漏

.net - 如何更改异常对象的异常消息?

python - 为什么 python 请求抛出这个 BadStatusLine 异常

c++ - 错误处理范式 : Mixing Exceptions and Error Codes

c++ - ATL COM 类注册 .rgs 文件默认值

delphi - 即使我使用 try..except 也会出现异步套接字错误 10049