既然子类对象直接调用就可以了为什么还要用虚函数形成多态呢

img

如果问有什么用,我告诉你,用处很大,我现在在做一个游戏项目,所有的游戏对象的基类都是Actor类,里面有个虚函数UpdateActor,用于更新游戏对象的状态,Actor有很多子类,比如子弹类飞机类等等,它们会重写UpdateActor函数。在主程序中,所有的游戏对象都被存储在一个容器中,类型是Actor*,这样想要更新所有的对象,直接遍历容器都调用UpdateActor,调用的是子类的函数而不是父类的。如果不用多态,很难做到。

你慢慢就明白了,这个多态指的是用基类的指针或引用指向子类对象,调用的函数还是子类的

在我看来多态是为了代码复用,实际上多态也是一种封装!比如铁路12306卖票,成人票,学生票,军人票,不同的人去买票会产生不同的票价(我称之为行为)。假设有一个buy的函数用来买票,如果不用多态,完全ok,但是你需要写好几个版本的buy函数。如果使用多态,则只需要用一个基类版本的buy就好。实现复用

参考下这个

为什么要使用多态,而不直接使用派生类对象调用虚函数?在构造函数以基类引用作形参,以派生类对象作传入的实参。_元口的博客-CSDN博客 c++中基类指针指向派生类时,调用的虚函数是派生类的。那为何不直接用派生类的对象来调用就行了,设计虚函数的真正意图是什么?直接用派生类的对象是可以的,但是虚函数的作用体现在多态上。在实际编程中,往往不直接通过派生类对象来调用其成员函数,而是通过一个指向派生类对象的指针(或引用)来调用其成员函数。这在面向对象编程中非常常见。其好处是:通过这个基类指针或者引用来调用虚函数的时候,实际执行的是派生类对象... https://blog.csdn.net/qq_41230365/article/details/79327965