我试图理解多态性,但我不明白如果静态多态性对于调用类的成员可以正常工作,为什么我们需要运行时多态性。
就像,假设这是一个问题。
#include <bits/stdc++.h>
using namespace std;
class base{
public:
virtual void fun(){
cout<<"base called"<<endl;
}
};
class derived:public base{
public:
void fun(){
cout<<"derived called"<<endl;
}
};
int main() {
base b,*b1;
derived d;
b1 = &d;
b1->fun();
// b.fun();
// d.fun();
}
假设这是我的代码,我想访问派生类或基类的函数,我可以通过简单地创建该类的对象来实现,所以如果没有问题,那么为什么我们尝试使用引用(运行时)调用该对象多态性)。
有人可以解释运行时多态性的实际需求,或者如果可能的话,您可以使用任何 现实生活场景 来解释它吗?
最佳答案
多态性在任何时候都非常有用,因为在编译时无法准确地告诉软件在运行时会发生什么,或者当您需要一个容器来容纳所有实现通用接口(interface)的异构事物时。
一个很好的例子是 UI 工具包。几乎所有的 UI 工具包都有一个容器的概念,可以容纳其他小部件,但是 UI 工具包的作者不知道您将要放入容器中的小部件。由于容器需要能够处理任何类型的小部件,因此多态是实现这一点的最简单方法。
关于c++ - 为什么我们实际上需要运行时多态性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62113098/