Em linguagem C, operadores matemáticos como +, * e % têm comportamento definido. Isto é, eles só realizam operações definidas: + para somar variáveis, * para multiplicar, e assim por adiante.
No caso de classes e objetos, não está definido o que significa, por exemplo, a soma de dois objetos. Esta operação deve depender do que a classe representa. Assim, em C++, é possível definirmos o comportamento de uma série de operadores (definido como a sobrecarga de operadores).
O código abaixo apresenta 3 classes que representam números complexos. Cada uma delas trata a soma de números complexos de uma forma diferente. O código seguinte realiza a soma de números complexos utilizando a sobrecarga de operadores.