A function f declared to be virtual in a base class A can optionally be given a new implementation in a derived class B.
To give a new implementation, the function f should be declared again in B. In this case it should have the exact same signature.
Replacement means B::f is given an new implementation that does not repeat or invoke A::f that whose implementation it is "replacing".
Alternatively, refinement would mean that B::f does the same thing as A::f but also adds some additional action (presumably involving data members in B that are not in A).
Constructors for classes typically use refinement. Indeed if no A constructor is invoked explicitly by a B constructor, the compiler will invoke an available no argument A constructor.
What is a constructor initialization list, where does it appear sytactically and when does it execute compared to the body of the constructor?