Difference between revisions of "Step 4 (S-11538)"
(Create page for step id=11538) |
|||
Line 1: | Line 1: | ||
Step on Stepik: https://stepik.org/lesson/563/step/4 | Step on Stepik: https://stepik.org/lesson/563/step/4 | ||
− | + | [[File:Step_4_(S-11538)_1.png|border|800px]] | |
[00:00 - 00:16] решение проблемы дублирования кода с использованием шаблонов очень похоже на решение этой проблемы с использованием макросов однако макрос отрабатывает не так и препроцессора в то время как шаблоны обрабатывается на этапе компиляции преимуществу шаблона в том что они являются конструкциями языка | [00:00 - 00:16] решение проблемы дублирования кода с использованием шаблонов очень похоже на решение этой проблемы с использованием макросов однако макрос отрабатывает не так и препроцессора в то время как шаблоны обрабатывается на этапе компиляции преимуществу шаблона в том что они являются конструкциями языка | ||
Line 24: | Line 24: | ||
− | + | [[File:Step_4_(S-11538)_2.png|border|800px]] | |
[01:59 - 02:18] прекомпиляция будет проверено что type это именно имя типа то есть тот момент когда мы это типа подставим в шаблон в отличие от ватраса там это будет проверяться уже когда будем компилировать код после макроподстановки | [01:59 - 02:18] прекомпиляция будет проверено что type это именно имя типа то есть тот момент когда мы это типа подставим в шаблон в отличие от ватраса там это будет проверяться уже когда будем компилировать код после макроподстановки |
Latest revision as of 13:07, 7 August 2017
Step on Stepik: https://stepik.org/lesson/563/step/4
[00:00 - 00:16] решение проблемы дублирования кода с использованием шаблонов очень похоже на решение этой проблемы с использованием макросов однако макрос отрабатывает не так и препроцессора в то время как шаблоны обрабатывается на этапе компиляции преимуществу шаблона в том что они являются конструкциями языка
[00:16 - 00:32] и как другие конструкции языка не проходит соответствующую их синтаксическую проверку на этапе компиляции макросов и никакой проверки не проходит потому что на тот момент ничего неизвестно препроцессор ничего не знает о языке c + + не работает с параметрами макросов
[00:32 - 00:51] как со строчками шаблоны все по другому если качество параметры шаблона ожидается типа то в том случае если поставить я что то другое вы получите соответствующее сообщение об ошибке поэтому использовать шаблоны удобнее давайте посмотрим как решить нашу проблему за полем шаблонов
[00:51 - 01:06] вместо макроса определяющего код класса мы будем удалять шаблон определение шаблонного класса начинается ключевых слов и дальше в угловых скобках перечисляются
[01:06 - 01:23] параметры этого шаблона нашем случае он будет 1 параметр это будет параметр и ключевое слово класс будет говорить о том что этот параметр это некоторый тип
[01:23 - 01:41] не обязательно именно класс это может быть в том числе и встроить место заказ можно использовать никакой разницы нету ну просто слова длиннее чем то класс после этого заголовка шаблона
[01:41 - 01:59] или перечисления формальных параметров мы определяем класс в определении которого в качестве типа хранил в динамическом массиве элемента мы будем использовать слово
[01:59 - 02:18] прекомпиляция будет проверено что type это именно имя типа то есть тот момент когда мы это типа подставим в шаблон в отличие от ватраса там это будет проверяться уже когда будем компилировать код после макроподстановки
[02:18 - 02:35] как использовать собой используется года проще чем макросы для макросов нам надо было сначала определить соответствующие типы после этого могли использовать его шаблонами все проще в тот момент когда мне потребовался
[02:35 - 02:54] массив элементов типа int я просто пишу эры от int и это соответствует шаблону рейс подставленным вместо так логично в тот момент когда я хочу воспользоваться массивом хранящим
[02:54 - 03:12] элементы типа вот я просто пишу от флот это будет соответствовать шаблону re с поставленным место так типам компилятор когда встретит такую строчку 1 раз он
[03:12 - 03:29] подставят вместо type а тип int и скомпилирует данный класс то есть если в шаблон поставить конкретные значения аргумента то он уже перестает быть шаблоном и тогда к императору можете скомпилировать и дальше использует то есть 1 раз когда мы в меню
[03:29 - 03:48] от int пройдет компиляция этого шаблона это называется еще инстанциирование шаблонов и после этого каждый раз когда он встречать когда то уже будет знать что же это за класс такой таким образом шаблона они с 1 стороны очень похоже на макросы рядом нет компьютера проще определять
[03:48 - 03:58] с другой стороны работа с ними удобнее на счет того что шаблоны как конструкция языка проходят соответствующие проверки на этапе компиляции