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