#include <iostream>
using namespace std;
class A
{
public:
virtual void foo(int a = 1024)
{
cout << " A -> foo " << a << endl;
}
};
class B : public A
{
public:
virtual void foo(int a = 2048)
{
cout << " B -> foo " << a << endl;
}
};
int main()
{
B* b = new B;
b->foo();
A* a = b;
a->foo();
}
输出结果:
/home/a/j/nomad2:./a.out
B -> foo 2048
B -> foo 1024
传给foo的缺省实参不是在运行时决定的,而是在编译时根据被调用函数的对象的类型决定的。