@sabn1k
Возможно я написал чепуху, но попытайтесь понять

Для чего нужна перегрузка операторов?

Для чего нужна перегрузка операторов? Почему, например, вместо использования
bool someclass::operator< (someclass x) const
нельзя использовать обычное сравнение?
  • Вопрос задан
  • 3313 просмотров
Решения вопроса 1
Ni55aN
@Ni55aN
После определения своих классов часто требуются разные операции над их экземплярами, и перегрузка операторов помогает представить это в удобочитаемом виде.

Например, экземпляры класса Vector3 нужно сложить (обычная операция сложения векторов в 3х мерном пространстве), и в случае без перегрузки операторов это имело следующий вид
firstVector.add(secondVector); // отсюда понятно, что к первому вектору прибавляется второй, но скорее всего результат записывается в первый

А если статическую функцию использовать:
Vector3::sum(firstVector,secondVector); // тогда ясно что возвращается их сумма, но все равно с виду не хорошо выглядит


А вот с перегруженным оператором + можно получить следующее
firstVector+secondVector; // и это будет работать так же, как пример выше,  но с значительно улучшенным видом


И так можно делать как с многими операторами, не только арифметическими или логическими
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
drem1lin
@drem1lin
чуть программист, чуть чуть админ...
она нужна, что бы упростить разработку. Когда вы разрабатываете свой класс и вам нужно сделать сортировку по какому то из полей, например, вы можете сравнивать напрямую это поле, или написать перегрузку операторов и сравнивать сразу экземпляры, так же есть операторы присваивания, которые, позволяют скопировать не только указатель на данные, но и отдельно сами данные. Все что делается в этих операторах, можно сделать руками, но сделав перегрузку вы делаете удобнее прежде всего себе и уменьшаете дублирование кода, а значит поправив код в одном месте вы его поправите везде
Ответ написан
@vilgeforce
Раздолбай и программист
А как вы будете точки в трехмерном пространстве сравнивать, например?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы