These "chameleon" operators simplify the C++ code so that a statement like d3.addobjects(d1,d2); could be changed to d3=d1 + d2;. In this example, a user defined data type in the form of objects (d1, d2, d3) has been defined. It is of a class distance.
class distance
{
private:
int feet;
float inches;
public:
distance( ) { feet=0; inches=0;}
distance( int ft, float in) { feet=ft; inches=in; }
distance operator + ( distance );
}
distance distance::operator + (distance d2)
{
int ft = feet + d2.feet;
float in=inches + d2.inches;
if (in >=12) { in-=12; ft++; } // add to feet if inches >=12
return distance(ft, in);
}
In this example the " + " operator is overloaded, allowing the addition of two objects of the same class.