c++在循环中重写函数

C++ overriden functions in loops

本文关键字:重写 函数 循环 c++      更新时间:2023-10-16

好了,我试着从c++中的一个类调用一个函数,它覆盖了父类中的一个函数。

类设置:

BaseClass的更新函数声明如下:

virtual void update() = 0;

然后我有扩展BaseClassObject类。在这个类中,我通过以下方式再次声明update:

virtual void update() override;

然后我有我的Player类,它的更新函数声明如下:

void update() override;

然后存储object的vector,并循环遍历该vector:

std::vector<Object> _objs

我是否必须创建一个新的向量来循环调用右更新函数,或者当我循环遍历一个对象数组时,是否有某种方法可以调用更新函数?

您需要使用vector或pointer

std::vector<Object*>

或智能指针

std::vector<std::shared_ptr<Object>>

如果你不这样做,添加一个Player对象到向量将导致对象切片。Player将被转换为Object,因此将调用Objectupdate()的实现。