Сообщение Re[3]: Операции сравнения от 28.02.2026 13:10
Изменено 28.02.2026 13:12 rg45
Re[3]: Операции сравнения
Здравствуйте, LaptevVV, Вы писали:
LVV>Вот смотри, интерфейс класса
LVV>
LVV>Нет никаких определений операций сравнения.
LVV>Но!Вот такой код работает абсолютно правильно:
LVV>
LVV>Трехстроннее сравнение автоматом синтезируется ?
LVV>Или обычные сравнения автоматом синтезируется ?
А ты неявный оператор приведения к инту непробовал объявить явным, или вообще убрать?
LVV>Вот смотри, интерфейс класса
LVV>
class Fraction final{
LVV> [/b]
LVV> // преобразование в int - целая часть дроби
LVV> operator int() const noexcept;
LVV> // дружественные функции
LVV>};
LVV>Естественно, в коде реализация отсутствует.LVV>Нет никаких определений операций сравнения.
LVV>Но!Вот такой код работает абсолютно правильно:
LVV>
LVV> Fraction A {3}; // целое = <3/1>
LVV> Fraction B {6,4}; // дробь = <3/2>
LVV> cout << A << B << endl;
LVV>// это работает - почему ?
LVV> cout << std::boolalpha
LVV> << (A == B) << '\n' // false
LVV> << (A != B) << '\n' // true
LVV> << (A < B) << '\n' // false
LVV> << (A <= B) << '\n' // false
LVV> << (A > B) << '\n' // true
LVV> << (A >= B) << '\n'; // true
LVV>LVV>Трехстроннее сравнение автоматом синтезируется ?
LVV>Или обычные сравнения автоматом синтезируется ?
А ты неявный оператор приведения к инту непробовал объявить явным, или вообще убрать?
Re[3]: Операции сравнения
Здравствуйте, LaptevVV, Вы писали:
LVV>Вот смотри, интерфейс класса
LVV>
LVV>Нет никаких определений операций сравнения.
LVV>Но!Вот такой код работает абсолютно правильно:
LVV>
LVV>Трехстроннее сравнение автоматом синтезируется ?
LVV>Или обычные сравнения автоматом синтезируется ?
А ты неявный оператор приведения к инту не пробовал объявить явным, или вообще убрать?
LVV>Вот смотри, интерфейс класса
LVV>
class Fraction final{
LVV> [/b]
LVV> // преобразование в int - целая часть дроби
LVV> operator int() const noexcept;
LVV> // дружественные функции
LVV>};
LVV>Естественно, в коде реализация отсутствует.LVV>Нет никаких определений операций сравнения.
LVV>Но!Вот такой код работает абсолютно правильно:
LVV>
LVV> Fraction A {3}; // целое = <3/1>
LVV> Fraction B {6,4}; // дробь = <3/2>
LVV> cout << A << B << endl;
LVV>// это работает - почему ?
LVV> cout << std::boolalpha
LVV> << (A == B) << '\n' // false
LVV> << (A != B) << '\n' // true
LVV> << (A < B) << '\n' // false
LVV> << (A <= B) << '\n' // false
LVV> << (A > B) << '\n' // true
LVV> << (A >= B) << '\n'; // true
LVV>LVV>Трехстроннее сравнение автоматом синтезируется ?
LVV>Или обычные сравнения автоматом синтезируется ?
А ты неявный оператор приведения к инту не пробовал объявить явным, или вообще убрать?