Позвольте мне объяснить на примере оператора != для строки:
- Когда я пишу str1 != str2, компилятор преобразует это в (str1 str2) != 0.
Однако эффективная реализация != для строки сначала проверил бы str1.size() != str2.size(), и только в случае неудачи перешел бы к сравнению фактических символов. - Эта оптимизация не может быть реализована для оператора космического корабля, так как ему в любом случае придется определять «большую» строку.
Подробнее здесь: https://stackoverflow.com/questions/657 ... equality-i