前些日子,有个同学问我一个关于虚函数的缺省参数问题。他是从某个论坛上看到的,但是自己没想通,便来找我。现在分享一下这个问题。先看一小段代码:
#include <iostream>
using namespace std;
class A
{
public:
virtual void Fun(int number = 10)
{
cout << "A::Fun with number " << number;
}
};
class B: public A
{
public:
virtual void Fun(int number = 20)
{
cout << "B::Fun with number " << number << endl;
}
};
int main()
{
B b;
A &a = b;
a.Fun();
return 0;
}
问题是,这段代码输出什么?正确答案是:B::Fun with number 10
这个问题并不难,关键要看你对C++了解多少。我了解得不多,但是这个小问题恰好能答上来。很明显,这段代码的输出结果依赖于C++的多态。什么是多态?在C++中,多态表现为指向父类对象的指针ÿ