C++ What is Operator Overloading?

In C++, operator overloading is a feature that allows you to redefine the behavior of an operator when it is applied to objects of a class. This can make your code more expressive and natural by allowing you to use operators in a way that makes sense for the objects you are working with.

For example, suppose you have a class called Complex that represents complex numbers, and you want to be able to use the + operator to add two Complex objects. To do this, you can overload the + operator in the Complex class like this:

class Complex {
public:
    Complex(double r = 0, double i = 0) : real(r), imag(i) {}
    Complex operator+(const Complex& c) const {
        return Complex(real + c.real, imag + c.imag);
    }
private:
    double real, imag;
};
Sour‮i.www:ec‬giftidea.com

In this example, the Complex class has a constructor that takes two double arguments and initializes the real and imaginary parts of the complex number. The + operator is overloaded using the operator+ method, which takes a const reference to a Complex object and returns a new Complex object that is the sum of the two operands.

With this operator overloaded, you can now add two Complex objects using the + operator, just like you would with built-in numeric types:

Complex a(1, 2);
Complex b(3, 4);
Complex c = a + b; // c is now (4, 6)

This code creates two Complex objects, a and b, and adds them together using the + operator. The result is stored in a new Complex object called c.

In addition to arithmetic operators like +, -, *, and /, you can also overload comparison operators like ==, <, and >, as well as stream insertion and extraction operators << and >>, and others.

Operator overloading is a powerful feature in C++ that can make your code more expressive and easier to read. However, it should be used with care and only when it makes sense for the objects and operations you are working with.