我正在从我目前的 OOP 课程中编写一个 safari 课程。野生动物园有老虎、狮子和长颈鹿。动物派生自基类Animal。现在,我应该实现一个 CountTigers 例程。但是,我应该在“不改变”狮子和长颈鹿类的情况下做到这一点。这个项目还有很多其他方面(GUI、动物删除、菜单等、鼠标事件)——有些我可能会在不经意间做到这一点。
现在,CountTigers 例程应该包含在 Safari 类中,该类包含 safari 中所有动物的列表。我的目标是遍历动物列表,检查当前动物是否是老虎并返回一个代表老虎数量的值。我可以通过在我的 Animals 类中包含一个虚函数并仅在 Tigers 类中实现它来轻松地做到这一点。
Class Animal:
....
virtual bool IsTiger();
Class Tiger: public Animal
....
virtual bool IsTiger(return true;)
我现在可以遍历动物列表并检查每只动物的 IsTiger。我的问题是,因为我在 Animal 中声明了一个虚函数,即使没有实现虚函数,我是否“改变”了长颈鹿和狮子类?