Difference between revisions of "Step 7 (S-11065)"

From Stepik Wiki
Jump to: navigation, search
(Create page for step id=11065)
 
 
Line 1: Line 1:
 
Step on Stepik: https://stepik.org/lesson/559/step/7
 
Step on Stepik: https://stepik.org/lesson/559/step/7
  
<img width="50%" src="https://ucarecdn.com/57d418c4-793e-4fb9-9f3a-609d6e2335b3/">
+
[[File:Step_7_(S-11065)_1.png|border|800px]]
  
 
[00:00 - 00:17] в завершение нашего разговора перегрузка операторов я расскажу о еще нескольких вещах которых стоит помнить при перегрузке операторов начнем со стандартной семантике при перегрузке операторов стоит соблюдать стандартном семантику то есть не стоит перегружать оператор + как оператор умножение операторов
 
[00:00 - 00:17] в завершение нашего разговора перегрузка операторов я расскажу о еще нескольких вещах которых стоит помнить при перегрузке операторов начнем со стандартной семантике при перегрузке операторов стоит соблюдать стандартном семантику то есть не стоит перегружать оператор + как оператор умножение операторов
  
  
<img width="50%" src="https://ucarecdn.com/36cb7efd-7feb-421c-93b8-0931141cd761/">
+
[[File:Step_7_(S-11065)_2.png|border|800px]]
  
 
[00:17 - 00:34] делить как пираты взятие остатка разумно чтобы поведение ваших перегруженных операторов оно соответствовало поведению этих аппаратов для встроенных типа таким образом человек который будет работать с вашим кодом будет понимать что здесь происходит
 
[00:17 - 00:34] делить как пираты взятие остатка разумно чтобы поведение ваших перегруженных операторов оно соответствовало поведению этих аппаратов для встроенных типа таким образом человек который будет работать с вашим кодом будет понимать что здесь происходит
  
  
<img width="50%" src="https://ucarecdn.com/643bbb71-fc0a-4853-833c-a9840885104e/">
+
[[File:Step_7_(S-11065)_3.png|border|800px]]
  
 
[00:34 - 00:51] да конечно если ваша задача запутать его то тут у вас большое пространство для работ однако если вы хотите написать код в котором будет удобно и просто работать то конечно стоит соблюдать
 
[00:34 - 00:51] да конечно если ваша задача запутать его то тут у вас большое пространство для работ однако если вы хотите написать код в котором будет удобно и просто работать то конечно стоит соблюдать
  
  
<img width="50%" src="https://ucarecdn.com/49044f57-b3c1-471d-91ff-5ed08cfd8665/">
+
[[File:Step_7_(S-11065)_4.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/d36c6d39-696b-4cbf-a88a-6e8d17decb4c/">
+
[[File:Step_7_(S-11065)_5.png|border|800px]]
  
 
[00:51 - 01:08] стандартная семантику например если вы определить оператор + как оператору который ничего не прощает то синтаксически это возможно почему бы нет однако вы гарантировано поставить в ступор человека который будет за температурой + работать он будет ожидать что оператор +
 
[00:51 - 01:08] стандартная семантику например если вы определить оператор + как оператору который ничего не прощает то синтаксически это возможно почему бы нет однако вы гарантировано поставить в ступор человека который будет за температурой + работать он будет ожидать что оператор +
  
  
<img width="50%" src="https://ucarecdn.com/817cf637-4c9a-4cfd-ae63-a704c7258210/">
+
[[File:Step_7_(S-11065)_6.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/4064339c-224d-4318-b91b-7801b0c95198/">
+
[[File:Step_7_(S-11065)_7.png|border|800px]]
  
 
[01:08 - 01:23] будет вести себя также как аналогично оператора для стройности да конечно то что библиотеки в которых там стандартной семантика нарушается поиграть в которых операторы используют совсем не всех смыслах
 
[01:08 - 01:23] будет вести себя также как аналогично оператора для стройности да конечно то что библиотеки в которых там стандартной семантика нарушается поиграть в которых операторы используют совсем не всех смыслах
  
  
<img width="50%" src="https://ucarecdn.com/25bd72a0-fe0f-4621-84d7-e675e793e52c/">
+
[[File:Step_7_(S-11065)_8.png|border|800px]]
  
 
[01:23 - 01:38] в которых они с пользой для встроенных типов это специальная случае в большинстве случаев стоит конечно сохранять стандартных семантику я обеспечу поведение аналогичное тому которое есть для встроенных типов
 
[01:23 - 01:38] в которых они с пользой для встроенных типов это специальная случае в большинстве случаев стоит конечно сохранять стандартных семантику я обеспечу поведение аналогичное тому которое есть для встроенных типов
  
  
<img width="50%" src="https://ucarecdn.com/94191f92-0704-43ed-bd81-4ebfbeae2c57/">
+
[[File:Step_7_(S-11065)_9.png|border|800px]]
  
 
[01:38 - 01:54] в следующем важный момент это приоритет операторов стоит помнить о том что при перегрузке нельзя никак повлиять на приоритет операторов приоритеты операторов для перегруженных операторов быть точно такой же как и для встроенных операторов
 
[01:38 - 01:54] в следующем важный момент это приоритет операторов стоит помнить о том что при перегрузке нельзя никак повлиять на приоритет операторов приоритеты операторов для перегруженных операторов быть точно такой же как и для встроенных операторов
  
  
<img width="50%" src="https://ucarecdn.com/6b5b3547-4d3c-47e5-85b0-66698d8c1a8e/">
+
[[File:Step_7_(S-11065)_10.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/fd17a43b-1a8c-42b4-a463-424d2e2c51e3/">
+
[[File:Step_7_(S-11065)_11.png|border|800px]]
  
 
[01:54 - 02:09] давайте реально очень примере пусть мы для нашего класса вектор определим оператора сложение умножение сложение умножение скалярное и еще добавить оператор векторного умножения
 
[01:54 - 02:09] давайте реально очень примере пусть мы для нашего класса вектор определим оператора сложение умножение сложение умножение скалярное и еще добавить оператор векторного умножения
  
  
<img width="50%" src="https://ucarecdn.com/725b13df-0d2f-4ae8-b47c-498834c705ca/">
+
[[File:Step_7_(S-11065)_12.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/5e1add58-d2d9-4986-bf3d-01301da1cb21/">
+
[[File:Step_7_(S-11065)_13.png|border|800px]]
  
 
[02:09 - 02:23] ну так как у нас только 1 оператор нажать вот такой на другой оператор и будем считать что это кратер сдают векторного умножения например оператор xor то есть отвечающего и
 
[02:09 - 02:23] ну так как у нас только 1 оператор нажать вот такой на другой оператор и будем считать что это кратер сдают векторного умножения например оператор xor то есть отвечающего и
  
  
<img width="50%" src="https://ucarecdn.com/766e0b8c-476f-4d3f-94c8-5d41399c6a39/">
+
[[File:Step_7_(S-11065)_14.png|border|800px]]
  
 
[02:23 - 02:39] и будем использовать его в смысле оператора электро нажали да действительно это удобно мы определили специально оператор для конкретной операции векторами дальше можно писать почти выражение но проблема в том что
 
[02:23 - 02:39] и будем использовать его в смысле оператора электро нажали да действительно это удобно мы определили специально оператор для конкретной операции векторами дальше можно писать почти выражение но проблема в том что
  
  
<img width="50%" src="https://ucarecdn.com/1a5ef7ba-b358-45d1-a415-75a53cf80b50/">
+
[[File:Step_7_(S-11065)_15.png|border|800px]]
  
 
[02:39 - 02:57] нам никто не гарантирует что ваши представления математическое об операторе вектор ношении она будет соответствовать приоритет операторов который задан синтаксический для встроенных оператора все + + есть вопрос о том
 
[02:39 - 02:57] нам никто не гарантирует что ваши представления математическое об операторе вектор ношении она будет соответствовать приоритет операторов который задан синтаксический для встроенных оператора все + + есть вопрос о том
Line 67: Line 67:
  
  
<img width="50%" src="https://ucarecdn.com/da5d212c-8839-42ed-a665-ce65d98947e9/">
+
[[File:Step_7_(S-11065)_16.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/9488f240-e3f8-49dc-9fac-cddc007a3488/">
+
[[File:Step_7_(S-11065)_17.png|border|800px]]
  
 
[03:12 - 03:31] происходить вычисления ну вы знаете про то что приоритет оператора + меньше температуры умножить поэтому обычно арифметические выражения вычисляются естественному но что происходит здесь это вопрос это вот еще 1 домашнее задание для того чтобы избежать таких случаев если уж вы ввели новый оператор
 
[03:12 - 03:31] происходить вычисления ну вы знаете про то что приоритет оператора + меньше температуры умножить поэтому обычно арифметические выражения вычисляются естественному но что происходит здесь это вопрос это вот еще 1 домашнее задание для того чтобы избежать таких случаев если уж вы ввели новый оператор
Line 77: Line 77:
  
  
<img width="50%" src="https://ucarecdn.com/52e46ee7-7455-4bbd-8ef5-9469e3c406f1/">
+
[[File:Step_7_(S-11065)_18.png|border|800px]]
  
 
[03:46 - 04:03] ну а последний момент это уже синтаксической требования о том как можно переврать оператор можно перегружать операторы только для
 
[03:46 - 04:03] ну а последний момент это уже синтаксической требования о том как можно переврать оператор можно перегружать операторы только для
  
  
<img width="50%" src="https://ucarecdn.com/1b3485f9-87e1-4e4a-bdb2-23fb265d908e/">
+
[[File:Step_7_(S-11065)_19.png|border|800px]]
  
 
[04:03 - 04:18] пользовательских типов при этом важно чтобы хотя бы 1 аргумент вашего оператора был пользовательский нельзя пытаться переводить оператор + для intel и w так и було
 
[04:03 - 04:18] пользовательских типов при этом важно чтобы хотя бы 1 аргумент вашего оператора был пользовательский нельзя пытаться переводить оператор + для intel и w так и було
  
  
<img width="50%" src="https://ucarecdn.com/c0b19e57-54e6-446e-8f1b-a2e9baf02b59/">
+
[[File:Step_7_(S-11065)_20.png|border|800px]]
  
 
[04:18 - 04:34] важно чтобы хотя бы 1 из аргументов был пользовательский поэтому вот такой оператором перегрузить не сможете которые синтаксической правило если вы такой перегрузить то это просто приведет к ошибке то
 
[04:18 - 04:34] важно чтобы хотя бы 1 из аргументов был пользовательский поэтому вот такой оператором перегрузить не сможете которые синтаксической правило если вы такой перегрузить то это просто приведет к ошибке то

Latest revision as of 13:04, 7 August 2017

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

Step 7 (S-11065) 1.png

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


Step 7 (S-11065) 2.png

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


Step 7 (S-11065) 3.png

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


Step 7 (S-11065) 4.png

Step 7 (S-11065) 5.png

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


Step 7 (S-11065) 6.png

Step 7 (S-11065) 7.png

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


Step 7 (S-11065) 8.png

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


Step 7 (S-11065) 9.png

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


Step 7 (S-11065) 10.png

Step 7 (S-11065) 11.png

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


Step 7 (S-11065) 12.png

Step 7 (S-11065) 13.png

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


Step 7 (S-11065) 14.png

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


Step 7 (S-11065) 15.png

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


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


Step 7 (S-11065) 16.png

Step 7 (S-11065) 17.png

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


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


Step 7 (S-11065) 18.png

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


Step 7 (S-11065) 19.png

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


Step 7 (S-11065) 20.png

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


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


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