Replacement in C++ is complicated
-
If method is declared as virtual then method is polymorphic -
binding based on dynamic class.
-
If method is not declared as virtual them method is not polymorphic -
and binding is based on static class of value.
-
Constructors use refinement, all other methods use replacement.