【发布时间】:2016-03-16 22:58:36
【问题描述】:
我了解虚函数是可以在继承该函数的类中重新定义的函数。
然而,我不明白为什么我需要一个虚拟功能。有人可以向我解释或展示我需要虚拟功能的情况吗?
谢谢!
【问题讨论】:
我了解虚函数是可以在继承该函数的类中重新定义的函数。
然而,我不明白为什么我需要一个虚拟功能。有人可以向我解释或展示我需要虚拟功能的情况吗?
谢谢!
【问题讨论】:
有很好的解释和很好的例子 https://en.wikipedia.org/wiki/Virtual_function
【讨论】:
任何函数都可以在类的继承者中重新定义。虚函数的关键在于它们应该被覆盖。
假设你有一个多边形类(在 C++ 中):
class Polygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
virtual int area ()
{ return 0; }
};
现在在多边形类中定义Polygon.area 函数是没有意义的,因为在这个级别你不知道多边形是什么。虚函数的存在强制所有继承者实现他们自己的函数版本。
【讨论】: