Difference between revisions of "Step 3 (S-11537)"
(Create page for step id=11537) |
|||
Line 1: | Line 1: | ||
Step on Stepik: https://stepik.org/lesson/563/step/3 | Step on Stepik: https://stepik.org/lesson/563/step/3 | ||
− | + | [[File:Step_3_(S-11537)_1.png|border|800px]] | |
[00:00 - 00:18] давайте сначала разберемся как подобные проблемы можно решить средствами языка c языке отсутствует шаблоны и вместо шаблонов там используется макрос стоит отметить что языке отсутствуют классы и точно такой же проблемой там не возникает однако там похоже города проблема связана с определением структуру и функции | [00:00 - 00:18] давайте сначала разберемся как подобные проблемы можно решить средствами языка c языке отсутствует шаблоны и вместо шаблонов там используется макрос стоит отметить что языке отсутствуют классы и точно такой же проблемой там не возникает однако там похоже города проблема связана с определением структуру и функции | ||
Line 9: | Line 9: | ||
− | + | [[File:Step_3_(S-11537)_2.png|border|800px]] | |
[00:34 - 00:51] у этого макроса будет 2 параметра это имя класса который будет определяться и type тип хранимого элемент данный макрос будет раскрываться код соответствующее определению класса динамическом 8 | [00:34 - 00:51] у этого макроса будет 2 параметра это имя класса который будет определяться и type тип хранимого элемент данный макрос будет раскрываться код соответствующее определению класса динамическом 8 |
Latest revision as of 13:07, 7 August 2017
Step on Stepik: https://stepik.org/lesson/563/step/3
[00:00 - 00:18] давайте сначала разберемся как подобные проблемы можно решить средствами языка c языке отсутствует шаблоны и вместо шаблонов там используется макрос стоит отметить что языке отсутствуют классы и точно такой же проблемой там не возникает однако там похоже города проблема связана с определением структуру и функции
[00:18 - 00:34] как решить нашу проблему проблему дублирования кода при помощи макроса давайте вместо того чтобы поддельность определяют класс мы определим макрос который будет раскрываться определения соответствующего мы определим макрос define
[00:34 - 00:51] у этого макроса будет 2 параметра это имя класса который будет определяться и type тип хранимого элемент данный макрос будет раскрываться код соответствующее определению класса динамическом 8
[00:51 - 01:07] то есть это вот кот который аналогично коду класс р только вот вместо эры везде будет подставлено слово а вместо типа элементы которые хранится это может быть поставлена слабо
[01:07 - 01:26] теперь если мы где то захотим определить класс динамического массива хранящего элементы типа int надо будет написать define эры указать имя класса динамического массива и
[01:26 - 01:42] имя типа храним валентинки данная строчка будет раскрыто препроцессором определение класса ремонт класса динамического массива которых они приметы типа int логично если мы хотим определить
[01:42 - 01:56] классы для хранения фото надо будет дальше эти классы можно использовать так же как если бы они были объявлены без использования макросов то есть просто
[01:56 - 02:14] переменную типа int переменную типа float что то с ними делает все будет работать то есть мы за счет использования макросов избежали дублирования год мы взяли код спасибо превратили в макрос не таким образом сам код
[02:14 - 02:31] у нас присутствует только в 1 экземпляре с непосредственно видимо такой подход в принципе вполне рабочий но он обладает 1 большим минусом дело в том что макросы как я рассказывал это подстановки на уровне текст
[02:31 - 02:47] то есть при такой постановке не проверять что сюда был передан правильно с точки зрения с + + индикатор не проверяются что 2 параметр это действительно иметь все ошибки возникнут на этапе компиляции и будет очень сложно
[02:47 - 03:02] потому что эти ошибки они будут не в том коде который вы написали в том коде который получился из вашего кода после препроцессора такие ошибки отлавливать довольно сложно компиляции это будет выглядеть очень удобно поэтому
[03:02 - 03:20] + + или шаблона мы об этом поговорим в следующем слайде здесь а я хотел бы отметить что это технический момент он связан с тем что все макросы должна быть однострочным но наш макрос здесь многострочный для того чтобы показать что
[03:20 - 03:36] это все 1 строка 10 пользуется символ сложились в конце каждой строки определение макроса используется слэш то что показано что следующая строка является продолжением предыдущих то есть с точки зрения компилятора это все 1 большая строка весь небольшой макрос
[03:36 - 03:50] он постарается в 1 инструкцию определение макроса которые заменяют строчку define эры на длинную строку соответствующую определению класс