Возможно, имелись в виду проблемы с использованием операторов ввода для пользовательских типов данных в C++. В таком случае компилятор выдаёт ошибку, так как операторы ввода предопределены для работы только со встроенными типами данных.
Перегрузка оператора позволяет использовать оператор напрямую, что упрощает понимание кода и уменьшает его размер. Также перегрузка оператора обеспечивает ему дополнительную функциональность.
Если требуется перегрузить операторы стандартного ввода-вывода для нового класса, перегружать оператор приходится как внешнюю функцию. При этом автор нового класса может объявить эту функцию в структуре класса как дружественную, чтобы упростить ей доступ к закрытой части класса.
Некоторые ограничения перегрузки операторов в C++:
оператор должен уже существовать в языке (нельзя добавить в программу новые, не существовавшие ранее операторы);
нельзя изменить количество операндов, которое принимает перегружаемый оператор;
нельзя переопределять действия встроенных в C++ операторов при работе со встроенными типами данных.