当前位置:编程学习 > C/C++ >>

第15章 面向对象编程(7)

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

摘自 xufei96的专栏

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,