当前位置: 代码迷 >> 综合 >> C++向上向下类型转换的安全性问题
  详细解决方案

C++向上向下类型转换的安全性问题

热度:46   发布时间:2024-02-11 18:15:28.0

向上类型转换是指子类对象转为父类对象,向下类型转换是指父类对象转换为子类对象。(父辈在上)

如果没有发生多态(父类指针指向子类对象),那么向下转换是不安全的,向上转换是安全的。

Animal* anim = new Animal;基类转派生类

Cat* cat = (Cat*)anim;这样是不安全的,因为Cat所占大小比Animal更大,而申请空间只有Animal大小,指针转换后可能会导致越界。

如果发生多态,Animal* anim = new Cat; Cat* cat = (Cat*)anim; 本身已经申请了cat空间,那么就不会导致越界问题。

  相关解决方案