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();