我们有 dynamic_cast 的通用形式:
上面的摘录来自 cppreference:cppreference。
我特别困惑于此规则(5a)的加粗部分:dynamic_cast < new-type > ( expression )
您能否给出一个不满足此部分的示例?5:如果 expression 是指向或引用多态类型 Base 的指针或引用, 并且 new-type 是指向或引用类型 Derived 的指针或引用,则执行运行时检查:
a) 检查指针/标识符 expression 所指向/引用的最派生对象。 如果在该对象中,expression 指向/引用了 Derived 的公共基类, 并且只有一个派生自 expression 所指向/标识的子对象的 Derived 类型对象, 那么强制转换的结果将指向/引用该 Derived 对象。 (这称为“下行转换”)。
上面的摘录来自 cppreference:cppreference。