Creating two or more members that have the same name but are different in number or type of parameter is known as overloading.
In C++, we can overload:
We can overload these members because they have parameters only.
The process of having two or more functions with the same name, but different parameters, is known as function overloading.
The function is redefined by either using different types of arguments or a different number of arguments. It is only through these differences that a compiler can differentiate between functions.
The advantage of function overloading is that it increases the readability of a program because you don’t need to use different names for the same action.
Let’s see this simple example of function overloading where we change the number of arguments of add() method.
// program of function overloading when number of arguments vary.#include <iostream>using namespace std;class Cal {public:static int add(int a,int b){return a + b;}static int add(int a, int b, int c){return a + b + c;}};int main(void) {Cal C; //class object declaration. // class object declaration.cout<<C.add(10, 20)<<endl;cout<<C.add(12, 20, 23);return 0;}
add()
methods that have two different numbers of arguments. main()
function, we call these two methods by passing different numbers of arguments through the same call c.add
.Operator overloading is a compile-time polymorphism in which the operator is overloaded to provide special meaning to the user-defined data type. Operator overloading is used to overload or redefine most of the operators available in C++. It is used to perform the operation on the user-defined data type.
The advantage of operator overloading is that it can perform different operations on the same operand.
::
).
)*
)?:
)In the example below, we will use operators to overload the +
sign.
Let’s look at the example in detail.
You can see, in the code below, that the function must specify a return type. Then, it must use the keyword operator
followed by the +
sign.
//The function that overloads the '+' signint operator + (Shape shapeIn){return Area() + shapeIn.Area();}
To use the overloaded +
sign, we just have to use it with our user-defined objects. For example:
int total = sh1 + sh2;
In this case, the +
will add the areas of the two shapes.
#include <iostream>using namespace std;class Shape{private:int length; // Length of a boxint width;public:// Constructor definitionShape(int l = 2, int w = 2){length = l;width = w;}double Area(){return length * width;}int operator + (Shape shapeIn){return Area() + shapeIn.Area();}};int main(void){Shape sh1(4, 4); // Declare shape1Shape sh2(2, 6); // Declare shape2int total = sh1 + sh2;cout << "\nsh1.Area() = " << sh1.Area();cout << "\nsh2.Area() = " << sh2.Area();cout << "\nTotal = "<<total;return 0;}
In this example, We have applied the concept of operator overloading to add the areas of shape1 and shape2.