• Difficulty Level : Easy
• Last Updated : 08 Feb, 2023

Function Overloading provides multiple definitions of the function by changing signature i.e. changing number of parameters, change datatype of parameters, return type doesn’t play any role.

• It can be done in base as well as derived class
.Example:
```void area(int a);
void area(int a, int b); ```

## CPP

 `// CPP program to illustrate``// Function Overloading``#include ``using` `namespace` `std;` `// overloaded functions``void` `test(``int``);``void` `test(``float``);``void` `test(``int``, ``float``);` `int` `main()``{``    ``int` `a = 5;``    ``float` `b = 5.5;` `    ``// Overloaded functions``    ``// with different type and``    ``// number of parameters``    ``test(a);``    ``test(b);``    ``test(a, b);` `    ``return` `0;``}` `// Method 1``void` `test(``int` `var)``{``    ``cout << ``"Integer number: "` `<< var << endl;``}` `// Method 2``void` `test(``float` `var)``{``    ``cout << ``"Float number: "``<< var << endl;``}` `// Method 3``void` `test(``int` `var1, ``float` `var2)``{``    ``cout << ``"Integer number: "` `<< var1;``    ``cout << ``" and float number:"` `<< var2;``}`

Output

```Integer number: 5
Float number: 5.5
Integer number: 5 and float number:5.5```

### Function Overriding (achieved at run time)

It is the redefinition of base class function in its derived class with same signature i.e. return type and parameters.

• It can only be done in derived class.
• Example:
```Class a
{
public:
virtual void display(){ cout << "hello"; }
};

Class b:public a
{
public:
void display(){ cout << "bye";}
};
```

## CPP

 `// CPP program to illustrate``// Function Overriding``#include``using` `namespace` `std;` `class` `BaseClass``{``public``:``    ``virtual` `void` `Display()``    ``{``        ``cout << ``"\nThis is Display() method"``                ``" of BaseClass"``;``    ``}``    ``void` `Show()``    ``{``        ``cout << ``"\nThis is Show() method "``               ``"of BaseClass"``;``    ``}``};` `class` `DerivedClass : ``public` `BaseClass``{``public``:``    ``// Overriding method - new working of``    ``// base class display method``    ``void` `Display()``    ``{``        ``cout << ``"\nThis is Display() method"``               ``" of DerivedClass"``;``    ``}``};` `// Driver code``int` `main()``{``    ``DerivedClass dr;``    ``BaseClass &bs = dr;``    ``bs.Display();``    ``dr.Show();``}`

Output

```This is Display() method of DerivedClass
This is Show() method of BaseClass```

This article is contributed by Mazhar Mik, Yash Singla, and Chandan Kumar Mandal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.