[С++ ]

В C++ существует возможность перегрузить не только функции, но и операции внутри класса, например, можно добиться того, чтобы операция * при работе с матрицами осуществляла умножение матриц, а при работе с комплексными числами — умножение комплексных чисел.

 

Для перегрузки операций внутри класса нужно написать специальную функцию — метод класса. При перегрузке операций следует помнить следующее:

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