Function overloading and return type in C++

You can have multiple definitions for the same function name in the same scope. The definition of the function must differ from each other by the types and/or the number of arguments in the argument list. You cannot overload function declarations that differ only by return type.

The function overloading is basically the compile time polymorphism. It checks the function signature. If the signatures are not same, then they can be overloaded. The return type of a function does not create any effect on function overloading. Same function signature with different return type will not be overloaded.

Following is the example where same function print() is being used to print different data types

Example Code

#include <iostream>
using namespace std;
class printData {
      void print(int i) {
         cout << "Printing int: " << i << endl;
      void print(double f) {
         cout << "Printing float: " << f << endl;
      void print(char* c) {
         cout << "Printing character: " << c << endl;
int main(void) {
   printData pd;
   pd.print(5); // Call print to print integer
   pd.print(500.263); // Call print to print float
   pd.print("Hello C++"); // Call print to print character
   return 0;


Printing int: 5
Printing float: 500.263
Printing character: Hello C++