If a virtual function in a base class has a default argument that is overridden in the derived class, at run time the value in the base class is always taken. For example:
class Base{ public: virtual void func(int n = 0);};class Derived{ public: void func(int n=5);};
In the above code, if the func is overridden.Base* b = new Derived(); b->func();//, it takes o as the default value instead of 5.