Выбор ответа Middle Современный C++20/23 обновлено
Что даёт = default для <=>
Вопрос
Что происходит при объявлении auto operator<=>(const Point&) const = default; в структуре с полями x, y?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Почленное сравнение x, затем y, плюс неявный ==: работают все шесть. Сравнение идёт лексикографически по полям в порядке их объявления.
Варианты ответа
- Генерируется только
operator<, остальные сравнения пишутся вручную - Почленное сравнение
x, затемy, плюс неявный==: работают все шестьправильный ответ - Нужно отдельно определить
<,>,<=,>=, а<=>лишь объявляет их - Сравниваются адреса объектов, как при сравнении указателей на
Point
Разбор
Сравнение идёт лексикографически по полям в порядке их объявления. Выражения a < b, a >= b переписываются компилятором через <=>, а == и != через неявно объявленный operator== (он тоже = default).
- Генерируются все сравнения, не только
<. - Отдельные операторы писать не нужно.
- Сравниваются значения полей.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.