更新时间:2017-08-23 09:08:51浏览次数:1+次
接上篇。。。。
6.将子类对象传给父类指针,然后再转为子类对象的理解
有这样的需求,我们在传递对象的时候,需要将子类对象通过父类指针传出去,然后再根据需要还原为原来的子类对象。通过前面的分析,如果我们使用父类对象来接受子类对象,那么会导致数据的丢失,最后无法还原子类对象。AA aa;
A *pa = &aa;
pa->show();
AA aa1 = *((AA*)pa);
aa1.show();
这个过程就有一个父类指针指向子类对象,然后再通过指针类型转换改变指针所指的范围,然后再取得对象。我们这里的类型转换必须是指针类型,对象类型是无法转换的。父类对象转为子类对象是有缺陷的,因为父类对象没有子类新增的内容。这样转为子类后,新增的内容就是空白,那么这个子类对象就是先天有缺陷的。但是我们通过指针就可以绕过这个机制,但是需要自己保证正确性。相关资讯