class A
{
public:
virtual void func(int val=1)
{
std::cout<<"A->"<<val<<std:endl;
}
virtual void test()
{
func();
}
};
class B : public A
{
public:
void func(int val=0)
{
std::cout<<"B->"<<val<<std::endl;
}
};
int main()
{
A *p1=new B;
B *p2=new B;
p1->func(); //B->1
p1->text(); //B->1
p2->func(); //B->0
<strong>p2->text(); //B->1(虽然p2的静态类型是B*,但是调用text()后,用A*调用func())</strong>
return 0;
}
重点:缺省参数值是静态绑定的,绝不重新定义继承而来的缺省参数值。