Step 7 (S-11065)
Step on Stepik: https://stepik.org/lesson/559/step/7
[00:00 - 00:17] в завершение нашего разговора перегрузка операторов я расскажу о еще нескольких вещах которых стоит помнить при перегрузке операторов начнем со стандартной семантике при перегрузке операторов стоит соблюдать стандартном семантику то есть не стоит перегружать оператор + как оператор умножение операторов
[00:17 - 00:34] делить как пираты взятие остатка разумно чтобы поведение ваших перегруженных операторов оно соответствовало поведению этих аппаратов для встроенных типа таким образом человек который будет работать с вашим кодом будет понимать что здесь происходит
[00:34 - 00:51] да конечно если ваша задача запутать его то тут у вас большое пространство для работ однако если вы хотите написать код в котором будет удобно и просто работать то конечно стоит соблюдать
[00:51 - 01:08] стандартная семантику например если вы определить оператор + как оператору который ничего не прощает то синтаксически это возможно почему бы нет однако вы гарантировано поставить в ступор человека который будет за температурой + работать он будет ожидать что оператор +
[01:08 - 01:23] будет вести себя также как аналогично оператора для стройности да конечно то что библиотеки в которых там стандартной семантика нарушается поиграть в которых операторы используют совсем не всех смыслах
[01:23 - 01:38] в которых они с пользой для встроенных типов это специальная случае в большинстве случаев стоит конечно сохранять стандартных семантику я обеспечу поведение аналогичное тому которое есть для встроенных типов
[01:38 - 01:54] в следующем важный момент это приоритет операторов стоит помнить о том что при перегрузке нельзя никак повлиять на приоритет операторов приоритеты операторов для перегруженных операторов быть точно такой же как и для встроенных операторов
[01:54 - 02:09] давайте реально очень примере пусть мы для нашего класса вектор определим оператора сложение умножение сложение умножение скалярное и еще добавить оператор векторного умножения
[02:09 - 02:23] ну так как у нас только 1 оператор нажать вот такой на другой оператор и будем считать что это кратер сдают векторного умножения например оператор xor то есть отвечающего и
[02:23 - 02:39] и будем использовать его в смысле оператора электро нажали да действительно это удобно мы определили специально оператор для конкретной операции векторами дальше можно писать почти выражение но проблема в том что
[02:39 - 02:57] нам никто не гарантирует что ваши представления математическое об операторе вектор ношении она будет соответствовать приоритет операторов который задан синтаксический для встроенных оператора все + + есть вопрос о том
[02:57 - 03:12] в каком порядке будут вычисляться оператор он открытый я мне рассказывал про то какой приоритет у каждого оператора и поэтому если у вас этих знаний заранее нет вы не можете мне сказать а как здесь будет
[03:12 - 03:31] происходить вычисления ну вы знаете про то что приоритет оператора + меньше температуры умножить поэтому обычно арифметические выражения вычисляются естественному но что происходит здесь это вопрос это вот еще 1 домашнее задание для того чтобы избежать таких случаев если уж вы ввели новый оператор
[03:31 - 03:46] и уже написали некоторых выражений в котором непонятно в каком порядке будут вычисляться аргументам добавьте скобки в данном случае это естественно добавить скобки так вот таким образом
[03:46 - 04:03] ну а последний момент это уже синтаксической требования о том как можно переврать оператор можно перегружать операторы только для
[04:03 - 04:18] пользовательских типов при этом важно чтобы хотя бы 1 аргумент вашего оператора был пользовательский нельзя пытаться переводить оператор + для intel и w так и було
[04:18 - 04:34] важно чтобы хотя бы 1 из аргументов был пользовательский поэтому вот такой оператором перегрузить не сможете которые синтаксической правило если вы такой перегрузить то это просто приведет к ошибке то
[04:34 - 04:51] на этом поле меня все что хотел сказать про перегрузку операторов отдельных вопросов вставить перегрузка операторов выделения памяти ну так как она связана с разговор о том как правильно реализовывать правление понять
[04:51 - 05:02] отдельный большой вопрос про то разумно если вам интересно почитать какую то книжку а синтаксически никаких сложностей нет