Difference between revisions of "Step 5 (S-11064)"
(Create page for step id=11064) |
|||
Line 1: | Line 1: | ||
Step on Stepik: https://stepik.org/lesson/559/step/5 | Step on Stepik: https://stepik.org/lesson/559/step/5 | ||
− | + | [[File:Step_5_(S-11064)_1.png|border|800px]] | |
[00:00 - 00:16] следующее правило хорошего тона касается перегрузки операторов сравнения вася + есть 6 сравнение это 2 оператора на равенство неравенство и 4 оператора для ношения порядка то есть проверка на больше меньше | [00:00 - 00:16] следующее правило хорошего тона касается перегрузки операторов сравнения вася + есть 6 сравнение это 2 оператора на равенство неравенство и 4 оператора для ношения порядка то есть проверка на больше меньше |
Latest revision as of 13:02, 7 August 2017
Step on Stepik: https://stepik.org/lesson/559/step/5
[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] вы можете заменить слово стринг например в операторе меньше либо равная на название вашего класса вы таким образом получите реализации оператора меньше или равно в том случае если ты уже определись