Function overloading is a key technique to implement polymorphism in c++ where we are allowed to declare more than one function of same name provided their signatures are different.
Difference in signature means that the input parameters are different in terms of their type, count or order. For e.g.
int func(int); is different from int func(char);
difference is just the data type of input
int func(int); is different from int func(int,int);
difference is just the number of inputs
int func(int,char); is different from int func(char,int);
difference is just the order of input
int func(int,int); is different from int func(int,int,char);
difference is based on type and count both.
If the difference is based on return type only then it is not considered as overloading. for e.g.
int func(int); and void func(int);
are not polymorphic or overloaded is difference is just on the return data type.