Перегрузка операторов позволяет тебе задать своё поведение для операторов C++ при использовании с пользовательскими типами (классами). Это даёт возможность твоим классам интуитивно работать со стандартными операторами вроде +, *, == и других, вместо того чтобы заставлять пользователя вызывать явные функции.
Перегрузка операторов — это по сути синтаксический сахар поверх вызовов функций. Под капотом каждый перегруженный оператор — это функция, которую компилятор транслирует соответствующим образом.
Без перегрузки операторов ты бы писал:
Fred add(const Fred& x, const Fred& y);
Fred mul(const Fred& x, const Fred& y);
Fred result = add(add(mul(a,b), mul(b,c)), mul(c,a));
С перегрузкой операторов та же логика становится:
Fred operator+ (const Fred& x, const Fred& y);
Fred operator* (const Fred& x, const Fred& y);
Fred result = a*b + b*c + c*a;
Второй подход намного читабельнее и удобнее в поддержке. Он позволяет разработчикам писать математические или предметно-ориентированные операции в естественной нотации, делая код самодокументирующимся и более понятным с первого взгляда.
Перегрузка операторов позволяет определять пользовательские операторы для определяемых пользователем типов, но встроенные операторы для примитивных типов нельзя модифицировать.
Новый — ещё не проверен сообществом
Вы