Страницы

Поиск по вопросам

вторник, 2 октября 2018 г.

Как сделать, чтобы (x==1 && x==2 && x==3 && x==4) возвращало true?

Сегодня задали весёлый вопрос по C++ - как добиться, чтобы
(x==1 && x==2 && x==3 && x==4)
имело значение true?


Ответ

Навскидку - сразу два варианта: переопределить оператор == или оператор приведения. Оператор && сам по себе - вряд ли, только вкупе с каким-то из перечисленных...
Вот, примерно так - https://ideone.com/XM7O1s
struct Cast { int i; operator int() { return i++; } Cast(int i):i(i){} };
struct Equl { bool operator==(int) const { return true; } };
Можно, конечно, извратиться - типа сравнение с конкретно 1,2,3 и 4 дает true, но это уже сути дела не меняет...

Комментариев нет:

Отправить комментарий