В C++ существует возможность перегрузить не только функции, но и операции внутри класса, например, можно добиться того, чтобы операция * при работе с матрицами осуществляла умножение матриц, а при работе с комплексными числами — умножение комплексных чисел.
Для перегрузки операций внутри класса нужно написать специальную функцию — метод класса. При перегрузке операций следует помнить следующее:
- нельзя поменять приоритет операций;
- нельзя изменить тип операции (из унарной операции нельзя сделать бинарную или наоборот);
- перегруженная операция является членом класса и может использоваться только в выражениях с объектами своего класса;
- нельзя создавать новые операции;
- запрещено перегружать операции: . (доступ к членам класса), унарную операцию * (значение по адресу указателя), :: (расширение области видимости), ?: (операция if);
- допустима перегрузка следующих операций: +, -, *, /, %, =, <, >, +=, -=, *=, /=,&&, ||, ++, —, (), [], new, delete.