Question: what is the need for function overloading?
Answer: Overloaded functions enable you to supply different semantics for a function, depending on the types and number of arguments. For example, a print function that takes a std::string argument might perform very different tasks than one that takes an argument of type double.