向上类型转换是指子类对象转为父类对象,向下类型转换是指父类对象转换为子类对象。(父辈在上)
如果没有发生多态(父类指针指向子类对象),那么向下转换是不安全的,向上转换是安全的。
Animal* anim = new Animal;基类转派生类
Cat* cat = (Cat*)anim;这样是不安全的,因为Cat所占大小比Animal更大,而申请空间只有Animal大小,指针转换后可能会导致越界。
如果发生多态,Animal* anim = new Cat; Cat* cat = (Cat*)anim; 本身已经申请了cat空间,那么就不会导致越界问题。
本文探讨了面向对象编程中向上和向下类型转换的概念及其安全性。详细分析了在未发生多态时,向下转换可能导致的内存越界风险,以及多态情况下转换的安全性。
1141





