Базовое правило простое: не запутай своих пользователей. Перегрузка операторов должна служить одной цели — снизить сложность и количество багов в коде, который использует твой класс.
Никогда не переопределяй операторы просто потому что:
Эти мотивы нарушают основной принцип перегрузки операторов и в итоге портят качество кода и его поддерживаемость.
Переопределяй операторы только когда они:
Хорошие кандидаты на перегрузку:
+ для математических или комбинаторных операций== для сравнения на равенство[] для доступа к элементам контейнера* для разыменования указателя или умноженияИзбегай перегрузки когда:
Перегрузка операторов — это инструмент для ясности, а не витрина для демонстрации фишек. Всегда спрашивай себя: "Ожидали бы мои пользователи, что этот оператор будет работать именно так?" Если ответ нет, не переопределяй его. Читаемость твоего кода и снижение количества багов — вот что должно быть твоей целью, а не техническая крутизна.
Перегрузка оператора + для пользовательского класса математического вектора соответствует ожиданиям пользователей и улучшает ясность кода, поэтому она является хорошим кандидатом для перегрузки.
Новый — ещё не проверен сообществом
Вы