Difference between revisions of "Step 4 (S-11538)"

From Stepik Wiki
Jump to: navigation, search
(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
  
<img width="50%" src="https://ucarecdn.com/cdc50444-86fa-4047-9c51-d0d5c69150a9/">
+
[[File:Step_4_(S-11538)_1.png|border|800px]]
  
 
[00:00 - 00:16] решение проблемы дублирования кода с использованием шаблонов очень похоже на решение этой проблемы с использованием макросов однако макрос отрабатывает не так и препроцессора в то время как шаблоны обрабатывается на этапе компиляции преимуществу шаблона в том что они являются конструкциями языка
 
[00:00 - 00:16] решение проблемы дублирования кода с использованием шаблонов очень похоже на решение этой проблемы с использованием макросов однако макрос отрабатывает не так и препроцессора в то время как шаблоны обрабатывается на этапе компиляции преимуществу шаблона в том что они являются конструкциями языка
Line 24: Line 24:
  
  
<img width="50%" src="https://ucarecdn.com/30fb5c66-cede-4cb1-ab13-961f9de8aad4/">
+
[[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

Step 4 (S-11538) 1.png

[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] или перечисления формальных параметров мы определяем класс в определении которого в качестве типа хранил в динамическом массиве элемента мы будем использовать слово


Step 4 (S-11538) 2.png

[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] с другой стороны работа с ними удобнее на счет того что шаблоны как конструкция языка проходят соответствующие проверки на этапе компиляции