A fictitious example
We have seen: as long as the function name and the parameter list and the return type for a function is unique, the C++ compiler can distinguish between the functions.
virtual void function (const int);
virtual void function (const int, const float);
virtual void function (const int, const *float);
virtual void function (const int, const double);
virtual void function (const int, const *double);
virtual void function (const float);
virtual void function (const float, const float);
virtual void function (const float, const *float);
virtual void function (const float, const double);
virtual void function (const float, const *double);
virtual int function (const int);
virtual int function (const int, const float);
virtual int function (const int, const *float);
virtual int function (const int, const double);
virtual int function (const int, const *double);
virtual int function (const float);
virtual int function (const float, const float);
virtual int function (const float, const *float);
virtual int function (const float, const double);
virtual int function (const float, const *double);
All the declarations on the left are ok -- all the “function” routines can be distinguished by their parameter list and return type.
example *e = new example();