虚函数的问题,不甚明白,求解~
在学习小甲鱼的虚函数课程中,不甚明白,求助:图片是小甲鱼的例子,不明白的就是,为什么不能用:
Cat *cat = new Cat("加菲")
而要用:
Pet *cat = new Cat("加菲")
如果用第一种,就无需虚函数也能正确的表达play了啊?
为什么要用Pet 类去声明却new了Cat类?
为什么不用Cat 类去声明new一个Cat类?
然后还多了个用虚函数的问题,作为初学者实在找不到理由,求大神们解答~
我只是稍懂一些(毕竟学了没多长时间)可以作为参考
第一:参考百度百科上的一个例子
https://baike.baidu.com/item/%E8%99%9A%E5%87%BD%E6%95%B0/2912832?fr=aladdin
中间有这样一句话或许能解答你的疑惑(输出结果部分):
“可以看出这两个类因个体的差异而采用了不同的策略,但这并不是多态性行为(使用的是不同类型的指针),没有用到虚函数的功能。”
******如果使用不同类型的指针来实现的话,对现实中的维护会增加麻烦******
总结了一下虚函数的优缺点:
优点:可以提高可维护性(多态前提所保证的),提高代码的可扩展性
缺点:无法直接访问子类特有的成员
当然这是一个思路 具体可能有些出入
页:
[1]