};
int main(int argc, char* argv[]){B b;A d;A *a = &b;B *c = &b;a->fun();c->fun();a = &d;c = &d;a->fun();c->fun();return 0;}
结果分析:
c = &d; cannot convert from 'class A *' to 'class B *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
不能将父类赋给子类 原因如下, 子类可以在父类的基础上扩展内存 , 也就是多样化, 如果用父类生成的已有空间给子类使用, 那么可能存在内存溢出, 父类也不知道子类具体有哪些东西, 具体解释可以google
将错误去掉打印结果:
func b
func b
func a
解释下第二个输出: 类的多态性, 注意函数的返回值以及参数都需要和父类才能实现多态性, 即同一函数实现各自类的实现
如果子类只改变返回值会报错, 要改变返回值, 参数也必须改变才不会报错
新闻热点
疑难解答
图片精选