




































































































向下类型转换之所以这么说是因为其从类继承层次的父类向子类转换。
在多重继承的情况,可能导致二义性。看一下下面的类继承层次:
















指向类型D的指针转换为B或C都正常,但如果从D转换到A将会怎么样来?这个结果导致转换的二义性错误;为了结果这个问题,你可以指向两次明确的转型,例如:
在使用虚基类的时候就导致更复杂的模糊;看下面的类层次图:
在这个继承层次中,A是虚基类。假定一个类E的实例并且一个指向A子对象的指针,一次到B的dynamic_cast会由于不明确性导致失败,你必须首先转换到适当的层次,然后再向上转换到确定的层次,一直按照这种方式直到到达正确的B对象。
看下面的类层次图:
假定一个类型E的对象和一个指向D子对象的指针,从D子对象导航到左上A子对象,必须执行三个转换。从D到E的dynamic_cast的转换,然后一个从E到B的转换(可以是dynamic_cast或者隐式转换),最终是从B到A的转换,例如:

























































