fiverhythm 发表于 2020-3-2 12:53:53

虚函数的问题,不甚明白,求解~

在学习小甲鱼的虚函数课程中,不甚明白,求助:

图片是小甲鱼的例子,不明白的就是,为什么不能用:

Cat *cat = new Cat("加菲")
而要用:
Pet *cat = new Cat("加菲")

如果用第一种,就无需虚函数也能正确的表达play了啊?
为什么要用Pet 类去声明却new了Cat类?
为什么不用Cat 类去声明new一个Cat类?

然后还多了个用虚函数的问题,作为初学者实在找不到理由,求大神们解答~

_月陌_ 发表于 2020-7-6 08:08:20

我只是稍懂一些(毕竟学了没多长时间)可以作为参考
第一:参考百度百科上的一个例子
https://baike.baidu.com/item/%E8%99%9A%E5%87%BD%E6%95%B0/2912832?fr=aladdin

中间有这样一句话或许能解答你的疑惑(输出结果部分):
“可以看出这两个类因个体的差异而采用了不同的策略,但这并不是多态性行为(使用的是不同类型的指针),没有用到虚函数的功能。”

******如果使用不同类型的指针来实现的话,对现实中的维护会增加麻烦******

总结了一下虚函数的优缺点:
优点:可以提高可维护性(多态前提所保证的),提高代码的可扩展性
缺点:无法直接访问子类特有的成员

当然这是一个思路 具体可能有些出入
页: [1]
查看完整版本: 虚函数的问题,不甚明白,求解~