向上类型转换是指子类对象转为父类对象,向下类型转换是指父类对象转换为子类对象。(父辈在上)
如果没有发生多态(父类指针指向子类对象),那么向下转换是不安全的,向上转换是安全的。
Animal* anim = new Animal;基类转派生类
Cat* cat = (Cat*)anim;这样是不安全的,因为Cat所占大小比Animal更大,而申请空间只有Animal大小,指针转换后可能会导致越界。
如果发生多态,Animal* anim = new Cat; Cat* cat = (Cat*)anim; 本身已经申请了cat空间,那么就不会导致越界问题。