Step 5 (S-11064)

From Stepik Wiki
Revision as of 12:00, 20 March 2017 by Admin (Talk | contribs) (Create page for step id=11064)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/559/step/5

<img width="50%" src="https://ucarecdn.com/0838bb16-92f5-4d96-85b9-df9bf8696f7c/">

[00:00 - 00:16] следующее правило хорошего тона касается перегрузки операторов сравнения вася + есть 6 сравнение это 2 оператора на равенство неравенство и 4 оператора для ношения порядка то есть проверка на больше меньше


[00:16 - 00:31] меньше равно больше если вы хотите определить эти операторы нашего класса то во 1 если вы определили проверки нравится то что надо определить


[00:31 - 00:46] если вы определили 1 из операторов на сравнить отношение порядка то и надо определите все оставшиеся хитрость заключается в том что вам по существу надо определить только 2 а все оставшееся реализуются через них


[00:46 - 01:02] дать открыт например для того же класса string хотим реализовать теперь операторы сравнения для этого мы реализуем ну то есть вот реально напишем код специфичных для по со стринг только в 2 операторов этом операторе проверки нравятся


[01:02 - 01:22] тогда оператор проверки на неравенство будет реализовываться очень просто мы вызовем проверку на равенство и инвертируем ответ при помощи оператора а также мы реализуем оператор сравнения строчек но меньше то есть то есть опять же будет написан какой то специфичный код


[01:22 - 01:39] все оставшиеся оператора соответствующее отношение порядка они будут реализованы через этот оператор оператор больше чем меньше при помощи просто перестановки аргументов местами мы


[01:39 - 01:57] в операторе больше прямыми а и б а мы знаем меньше для быть оператор меньше или равно будет реализован как не больше оператор больше или равно будет реализован как не меньше таким образом для того чтобы реализовать 6


[01:57 - 02:15] операторов нам специфичный код потребовал вписать только в 2 то есть вот реальный код который соответствует тому класс для которого эти операторы пишете он будет только в 2 операторах оператор проверки нравятся то и в операторе меньше


[02:15 - 02:30] в принципе можно было бы обойтись 1 оператором можно было определить оператора меньше оператор проверки на равенство можно было бы определить следующим образом


[02:30 - 02:48] если ваша класс действительно можно сравнивать все объекты можно сравнить друг другу мы это сдают отношения строгого порядка


[02:48 - 03:06] то тогда операция равенство сдается в таким логическим выражения то есть если неверно что а меньше бы неверно чтобы меньше а то значит а равно бы это вам такое домашнее задание проверить что я вас не обману


[03:06 - 03:25] вот почему не всегда делается именно так почему иногда удобней переопределить операторы сравнения на равенство специфично дело в том что для того чтобы реализовать оператор сравнений тем образом который я только что написал


[03:25 - 03:42] нам потребуется вызвать оператор а меньше дважды нам потребуется вызвать вы здесь и здесь то есть это просто получается неэффективное мы по получать 2 строчки будем там дважды по ним бежать


[03:42 - 03:57] при этом оператор проверки на равенство может оказаться эффективной если его реализовать специфична поэтому в некоторых случаях действительно можно обойтись реализации только 1 оператора сравнения в


[03:57 - 04:16] в большинстве случаев если вы заботитесь об эффективности вам потребуются реализовать 2 оператора это оператор проверки неравенство и оператора меньше все оставшееся оператор реализуются тем образом который я здесь описал то есть просто по шаблону


[04:16 - 04:33] вы можете заменить слово стринг например в операторе меньше либо равная на название вашего класса вы таким образом получите реализации оператора меньше или равно в том случае если ты уже определись