转换失败时的C ++ dynamic_cast行为

时间:2011-12-19 18:25:39

标签: c++ dynamic-cast

dynamic_cast如果转换涉及指针,则求值为NULL,但如果转换涉及引用类型,则会抛出bad_cast异常。

为什么会出现这种行为差异?

由于

2 个答案:

答案 0 :(得分:4)

因为没有NULL引用这样的东西:)

答案 1 :(得分:3)

实际上可能存在空引用(或者更确切地说是引用null),但它是未定义的行为(UB)。由于标准不定义 UB,因此dynamic_cast抛出异常,这是非常明确的。