Overloading Binary Operators

C++You overload a binary unary operator with either a nonstatic member function that has one parameter, or a nonmember function that has two parameters. Suppose a binary operator @ is called with the statement t @ u, where t is an object of type T, and u is an object of type U. A nonstatic member function that overloads this operator would have the following form:

 return_type operator@(T)

A nonmember function that overloads the same operator would have the following form:

return_type operator@(T, U)

An overloaded binary operator may return any type.

The following example overloads the * operator:

struct X {
 
  // member binary operator
  void operator*(int) { }
};
 
// non-member binary operator
void operator*(X, float) { }
 
int main() {
  X x;
  int y = 10;
  float z = 10;
 
  x * y;
  x * z;
}

The call x * y is interpreted as x.operator*(y). The call x * z is interpreted as operator*(x, z).

Related References

IBM Copyright 2003