C++ Operator Overloading – Examples

By | May 20, 2022

C++ Operator Overloading in C++

Operator Overloading in C++ is the process of defining a custom logic for an operator to work for user defined classes.

We are already familiar with Operator Overloading, but are not conscious about it. For example, we use + operator to concatenate two strings. Here, + operator is overloaded with a definition to concatenate strings when + is used with two string type objects.

Another example would be complex numbers. When we use + operator to add two complex numbers, only the respective real and complex parts are added.

In this tutorial, we will learn how to use Operator Overloading for user defined classes.

Syntax

The syntax to overload operator + for class A, where + operator returns nothing, is

class A  public: void operator + (A const &a)  // logic  ;

The syntax to overload operator + for class A, where + operator returns an object of type A, is

class A  public: A operator + (A const &a)  A result; // logic return result;  ;

The definition for Operator Overloading starts with return type, followed by operator keyword, then the operator symbol, then the right operand. The logic is enclosed in flower braces just like a member function.

Examples

Overload Single Operator

In the following example, we define a class A. For this class, we overload operator + for objects of type A using Operator Overloading.

C++ Program

#include <iostream> using namespace std; class A  public: int x; A(int _x = 0)  x = _x;  A operator + (A const &a)  A result; result.x = x + a.x; return result;  ; int main()  A a1(4); A a2(5); A result = a1 + a2; cout << "Result : " << result.x << endl; 

Output

Result : 9 Program ended with exit code: 0

Overload Multiple Operators

In the following example, we define a class Log for logarithmic objects. For this class, we overload operator + and -.

C++ Program

#include <iostream> using namespace std; class Log  public: double x; Log(int _x = 0)  x = _x;  Log operator + (Log const &a)  Log result; result.x = x * a.x; return result;  Log operator - (Log const &a)  Log result; result.x = x / a.x; return result;  ; int main()  Log a1(4); Log a2(5); Log logAdd = a1 + a2; cout << "log 4 + log 5 = log " << logAdd.x << endl; Log logSub = a1 - a2; cout << "log 4 - log 5 = log " << logSub.x << endl; 

Output

log 4 + log 5 = log 20 log 4 - log 5 = log 0.8 Program ended with exit code: 0

Conclusion

In this C++ Tutorial, we learned what Operator Overloading is, and how to use Operator Overloading to define custom logic for operations on user defined class objects, with the help of examples.

Leave a Reply

Your email address will not be published.