Step 7 (S-11065)

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

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

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

<img width="50%" src="https://ucarecdn.com/57d418c4-793e-4fb9-9f3a-609d6e2335b3/">

[00:00 - 00:17] в завершение нашего разговора перегрузка операторов я расскажу о еще нескольких вещах которых стоит помнить при перегрузке операторов начнем со стандартной семантике при перегрузке операторов стоит соблюдать стандартном семантику то есть не стоит перегружать оператор + как оператор умножение операторов


<img width="50%" src="https://ucarecdn.com/36cb7efd-7feb-421c-93b8-0931141cd761/">

[00:17 - 00:34] делить как пираты взятие остатка разумно чтобы поведение ваших перегруженных операторов оно соответствовало поведению этих аппаратов для встроенных типа таким образом человек который будет работать с вашим кодом будет понимать что здесь происходит


<img width="50%" src="https://ucarecdn.com/643bbb71-fc0a-4853-833c-a9840885104e/">

[00:34 - 00:51] да конечно если ваша задача запутать его то тут у вас большое пространство для работ однако если вы хотите написать код в котором будет удобно и просто работать то конечно стоит соблюдать


<img width="50%" src="https://ucarecdn.com/49044f57-b3c1-471d-91ff-5ed08cfd8665/">

<img width="50%" src="https://ucarecdn.com/d36c6d39-696b-4cbf-a88a-6e8d17decb4c/">

[00:51 - 01:08] стандартная семантику например если вы определить оператор + как оператору который ничего не прощает то синтаксически это возможно почему бы нет однако вы гарантировано поставить в ступор человека который будет за температурой + работать он будет ожидать что оператор +


<img width="50%" src="https://ucarecdn.com/817cf637-4c9a-4cfd-ae63-a704c7258210/">

<img width="50%" src="https://ucarecdn.com/4064339c-224d-4318-b91b-7801b0c95198/">

[01:08 - 01:23] будет вести себя также как аналогично оператора для стройности да конечно то что библиотеки в которых там стандартной семантика нарушается поиграть в которых операторы используют совсем не всех смыслах


<img width="50%" src="https://ucarecdn.com/25bd72a0-fe0f-4621-84d7-e675e793e52c/">

[01:23 - 01:38] в которых они с пользой для встроенных типов это специальная случае в большинстве случаев стоит конечно сохранять стандартных семантику я обеспечу поведение аналогичное тому которое есть для встроенных типов


<img width="50%" src="https://ucarecdn.com/94191f92-0704-43ed-bd81-4ebfbeae2c57/">

[01:38 - 01:54] в следующем важный момент это приоритет операторов стоит помнить о том что при перегрузке нельзя никак повлиять на приоритет операторов приоритеты операторов для перегруженных операторов быть точно такой же как и для встроенных операторов


<img width="50%" src="https://ucarecdn.com/6b5b3547-4d3c-47e5-85b0-66698d8c1a8e/">

<img width="50%" src="https://ucarecdn.com/fd17a43b-1a8c-42b4-a463-424d2e2c51e3/">

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


<img width="50%" src="https://ucarecdn.com/725b13df-0d2f-4ae8-b47c-498834c705ca/">

<img width="50%" src="https://ucarecdn.com/5e1add58-d2d9-4986-bf3d-01301da1cb21/">

[02:09 - 02:23] ну так как у нас только 1 оператор нажать вот такой на другой оператор и будем считать что это кратер сдают векторного умножения например оператор xor то есть отвечающего и


<img width="50%" src="https://ucarecdn.com/766e0b8c-476f-4d3f-94c8-5d41399c6a39/">

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


<img width="50%" src="https://ucarecdn.com/1a5ef7ba-b358-45d1-a415-75a53cf80b50/">

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


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


<img width="50%" src="https://ucarecdn.com/da5d212c-8839-42ed-a665-ce65d98947e9/">

<img width="50%" src="https://ucarecdn.com/9488f240-e3f8-49dc-9fac-cddc007a3488/">

[03:12 - 03:31] происходить вычисления ну вы знаете про то что приоритет оператора + меньше температуры умножить поэтому обычно арифметические выражения вычисляются естественному но что происходит здесь это вопрос это вот еще 1 домашнее задание для того чтобы избежать таких случаев если уж вы ввели новый оператор


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


<img width="50%" src="https://ucarecdn.com/52e46ee7-7455-4bbd-8ef5-9469e3c406f1/">

[03:46 - 04:03] ну а последний момент это уже синтаксической требования о том как можно переврать оператор можно перегружать операторы только для


<img width="50%" src="https://ucarecdn.com/1b3485f9-87e1-4e4a-bdb2-23fb265d908e/">

[04:03 - 04:18] пользовательских типов при этом важно чтобы хотя бы 1 аргумент вашего оператора был пользовательский нельзя пытаться переводить оператор + для intel и w так и було


<img width="50%" src="https://ucarecdn.com/c0b19e57-54e6-446e-8f1b-a2e9baf02b59/">

[04:18 - 04:34] важно чтобы хотя бы 1 из аргументов был пользовательский поэтому вот такой оператором перегрузить не сможете которые синтаксической правило если вы такой перегрузить то это просто приведет к ошибке то


[04:34 - 04:51] на этом поле меня все что хотел сказать про перегрузку операторов отдельных вопросов вставить перегрузка операторов выделения памяти ну так как она связана с разговор о том как правильно реализовывать правление понять


[04:51 - 05:02] отдельный большой вопрос про то разумно если вам интересно почитать какую то книжку а синтаксически никаких сложностей нет