1.定义
向下类型转换:从父类转换为子类
向上类型转换:从子类转换为父类
2.区别和危险性
1)一般来讲,向上类型转换都是安全的,例如:
Base base;
Device dev;
base = dev; ←向上数据转换
2)向下类型转换是危险的,因为子类可能存在一些父类其他不存在的个性(增加了成员变量和函数)。例如:
dev = base; ←向下数据转换
更有可能产生切片问题,为了避免这种情况,我们可以使用dynamic_cast来继续进行向下类型转换。
Device *dev = dynamic_cast<Devece *>base; ←向下数据转换
尽管如此,还是可能出现失败的情况,因此不推荐向下类型转换。
时间: 2024-10-09 09:25:21