第15章 面向对象编程(7)
15.3.2 基类到派生类的转换
从基类到派生类的自动转换是不存在的。需要派生类对象时不能使用基类对象。
没有从基类类型到派生类型的(自动)转换,原因在于基类对象只能是基类对象,它不能包含派生类型的成员。如果允许用基类对象给派生类型对象赋值,那么就可以试图使用该派生类对象访问不存在的成员。
甚至当基类指针或引用实际绑定到派生类对象时,从基类到派生类的转换也存在限制。
编译器在编译时无法知道特定转换在运行时实际上是安全的。编译器确定转换是否合法,只看指针或引用的静态类型。
在这些情况下,如果知道从基类到派生类的转换是安全的,就可以使用static_cast强制编译器进行转换,或者,可以用dynamic_cast申请在运行时进行检查。
摘自 xufei96的专栏
补充:软件开发 , C++ ,