Как выполняется сравнение двух объектов при сравнении по умолчанию?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как выполняется сравнение двух объектов при сравнении по умолчанию?

Сообщение Anonymous »

Я читал об операторе сравнения по умолчанию и кое-что не понял.
Предположим, у меня есть следующее:

Код: Выделить всё

class Rational
{
public:
Rational(int numerator, int denominator) : numerator(numerator), denominator(denominator) {}
friend auto operator(const Rational& lhs, const Rational& rhs) = default;

private:
int numerator;
int denominator;
};
Итак, все операторы сравнения должны быть реализованы посредством одной перегрузки, что очень удобно. Но как проводится сравнение? Сравнивается ли каждый соответствующий элемент данных двух объектов при определении результата?
Этого не может быть. Если у меня, например, так:

Код: Выделить всё

Rational rt1{-3, 2};
Rational rt2{3, -2};
Каким будет результат rt1 < rt2? rt1.numerator < rt2.numerator, но rt1.denominator > rt2.denominator. Так как же на самом деле сравниваются эти два объекта?
Отказ от ответственности: я большой новичок в C++.

Подробнее здесь: https://stackoverflow.com/questions/785 ... comparison
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»