Operator Overloading
type operator operator-symbol ( parameter-list )
The operator keyword declares a function specifying what operator-symbol means
whenapplied to instances of a class. This gives the operator more than one meaning,
or "overloads" it. The compiler distinguishes between the different meanings of an
operator by examining the types of its operands.
You can redefine the function of most built-in operators globally or on a class-by-class
basis. Overloaded operators are implemented as functions.
The name of an overloaded operator is operatorx, where x is the operator as it appears in
Table 12.2. For example, to overload the addition operator, you define a function called
operator+. Similarly, to overload the addition/assignment operator, +=, define a
function called operator+=.
Although overloaded operators are usually called implicitly by the compiler when they are
encountered in code, they can be invoked explicitly the same way as any member or
nonmember function is called:
Point pt;
pt.operator+( 3 ); // Call addition operator to add 3 to pt.
Example
The following example overloads the + operator to add two complex numbers and returns the
result.
#include <iostream.h>
class Complex
{
public:
Complex( double r, double i ) : re(r), im(i) {}
Complex operator+( Complex &other );
void Display( ) { cout << re << ", " << im << endl; }
private:
double re, im;
};
// Operator overloaded using a member function
Complex Complex::operator+( Complex &other )
{
return Complex( re + other.re, im + other.im );
}
void main()
{
Complex a = Complex( 1.2, 3.4 );
Complex b = Complex( 5.6, 7.8 );
Complex c = Complex( 0.0, 0.0 );
c = a + b;
c.Display();
}