虚拟函数是动态绑定的,即它的调用取决于对象的动态型别。
而缺省参数值是静态绑定的,有对象的静态型别所决定。
pb的静态型别是Base*,由声名所决定。
而经由Base *pb=new Derived后,pb的动态型别是Derived*,是指当前对象的型别。
所以pb->f(1.0),f()动态绑定在Derived对象上。由于Derived中没定义,调用的是Base::f(double)
pb->g(),g()动态绑定在Derived对象上,而由于有缺省的参数,其静态绑定在Base对象上,所以调用的是Derived::g(10).
一般来说不要重新定义继承而来的缺省参数值。