The issues one shoul care about when implementing polymorphism in C++:
* C++ is not a purely object oriented programming language. On contrary It supports all the possibilities in OOP.
* You can implement all the OOP concepts in C++
*What happens is that it allows operators such as new delete to be overloaded. So when implementing overloadind operators in C++ You as a developer should be very careful.
* Do not have default parameters if you have one more function with the same number of parameters with same method signature.
*Do not unneccessarily define same function for different purposes. Ex: Numeric class should not contain functions to concatenate two strings
In regards to the point of static and dynamic binding the virtual keyword needs to be used for any functions that need to be dynamically overriden and not statically overloaded.