In order to overload a function, a different signature should be used for each overloaded version. A function signature consists of the list of types of its arguments as well as their order. Here’s a set of valid overloaded versions of a function named f:
void f(char c, int i);void f(int i, char c);void f(string & s);void f();void f(int i);void f(char c);
Note, however, that a function differing only by return type is illegal (it is legal to use different a return type with a different argument list, though) :
int f(); //error; differs from void f(); above only by return type int f(float f); //fine. unique signature