为什么在C ++中使用虚拟功能

时间:2019-04-09 11:02:33

标签: c++ oop polymorphism virtual

最近我参加了一次采访。采访者和我正在谈论c ++中的虚函数。我解释了虚拟函数的所有概念以及如何使用vtablevptr来工作。他同意我的解释。在关于虚函数的对话结束时,他问我一个问题,为什么我们要使用基类指针来调用派生类函数?

例如 Shapebase classCircleSquarederived classes从基类'Shape'继承而来的。定义的方法area()是虚函数。

Shape *basePtr = new Circle();
baseptr->area();

他问我为什么在这里使用基指针来调用派生类函数?为什么不创建派生类对象,并通过该对象调用派生类方法呢?

我告诉他,我们可以创建一个处理程序函数,因为该函数的参数始终为base class pointer。这样我们可以简单地将派生类对象调用handler function以便使用Generic实现。

此外,我们可以将派生类对象存储到基类指针的向量中,并且可以通过迭代向量来访问派生类方法。这样,我们可以建立一个顺序执行任务的命令。

但是他只是微笑着摇了摇头。我为什么在这里发布此问题,确切的答案是什么?或我的答案足以解释问题?

0 个答案:

没有答案