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

From Stepik Wiki
Jump to: navigation, search
(Create page for step id=11542)
 
 
Line 1: Line 1:
 
Step on Stepik: https://stepik.org/lesson/564/step/4
 
Step on Stepik: https://stepik.org/lesson/564/step/4
  
<img width="50%" src="https://ucarecdn.com/bdc11d69-d476-44ea-8406-fbfd8fa15a2b/">
+
[[File:Step_4_(S-11542)_1.png|border|800px]]
  
 
[00:00 - 00:17] на прошлом кстати я упомянул родную за туча шаблонов он совершил в класс шаблон функции нельзя определить значение шаблонных параметров по умолчанию вместо этого нужны перегрузку еще 1 важное отличие от шаблонных функций чтобы он оказался в заключается в том что для шаблонной функции работает механизм вывода шаблонных параметров
 
[00:00 - 00:17] на прошлом кстати я упомянул родную за туча шаблонов он совершил в класс шаблон функции нельзя определить значение шаблонных параметров по умолчанию вместо этого нужны перегрузку еще 1 важное отличие от шаблонных функций чтобы он оказался в заключается в том что для шаблонной функции работает механизм вывода шаблонных параметров

Latest revision as of 13:07, 7 August 2017

Step on Stepik: https://stepik.org/lesson/564/step/4

Step 4 (S-11542) 1.png

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


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


[00:34 - 00:53] давайте посмотрим как это работает на следующем примере пусть нас объявлена 3 шаблонные функции 1 шаблонной функции то шаблонов поведения в квадрате по которым мы уже говорили 2 функция шаблонная функция sort функции для сортировки массива которая принимает массив под указателем


[00:53 - 01:13] мы обсуждаем в предыдущем славе и 3 функция это перегрузка шаблонных он ты сорт которая принимает значение типа класс массива принимает объект этого типа по ссылке не сортирует массив шаблонный параметр функцию


[01:13 - 01:30] данном случае соответствует типу элементов в объекте массива дать вам так такие функции можно вызывать в 1 строчке функционал мы вызываем функцию скважин


[01:30 - 01:46] явно указывает значение шаблонного параметра данном случае будет вызвана функция сквозь ответ ну так мы это явно указали 2 строчке мы вызываем функцию с п не указывая шаблоны в этом случае компилятор будет


[01:46 - 02:01] выводить тип шаблона так как в обоих случаях тип аргумента который мы передали в эту функцию это 1 случай это было переменную типа int во 2 случае это незначительная терял которые также имейте


[02:01 - 02:18] то компилятор пользуясь определением функции squier закричит что тип int соответствовать типу нам которые лет чтобы он подставился значение типа int


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


[02:36 - 02:51] давайте посмотрим на следующий пример в этой строчке функции функции вам функцию сорт и передаем туда 2 указателя 1 указатель и указатель начало массива которые навернул оператор не а 2 на элемент следующий за которым мы все


[02:51 - 03:09] да ты че то не важно у нас даже нет определения функции sort важно что тип аргументов которые передаются это флот звездочка что будет делать компилятор как он будет выводить тип который является шаблоны параметрам функционалу ну посмотри что мы всегда представляем 2 значения


[03:09 - 03:26] и оба из них это флот звездочка решив простенько уравнение на типа в данном случае компьютер поймет что type соответствует флот и вызовет от отвод


[03:26 - 03:41] следующей строки мы пытаемся вызвать функцию передав туда в качестве 1 параметра указатель на флуд а в качестве 2 параметра показательно то здесь придается адрес


[03:41 - 04:00] переменной а который мне подойдет ошибка потому что компьютер не сможет решить эту уравнению есть получится неоднозначность либо type равен флоту если судить по 1 аргументу либо type равен into я светик давайте дадим стечь последнее солнце


[04:00 - 04:17] последней строчке функция foo вызывается перегрузка функции софт который работает с значениями типа космосимов и вот в эту функцию передается ссылка на переменную и день


[04:17 - 04:37] который мид рф а то в данном случае компилятор тоже сможет вывести тип несмотря на то что шаблоны параметров функции не участвует явно вам типах аргументов функций а я тут опосредованно то есть типам


[04:37 - 04:53] который понимает эта функция является производным от ее чтобы на параде но все равно оператор сможет решить эту простую задачу то есть поняв что мы сюда передаем значение типа 1 вот double


[04:53 - 05:09] ну передом и по ссылке вот что компилятор сможет догадаться что в данном случае type равен типа double и вызовет функции


[05:09 - 05:28] то есть таким образом мы можем заметить что компилятор может выводить значение шаблоны параметров и в таких случаях когда шаблонного параметра являются непосредственно типам аргументов функции аргументов является некоторый тип который


[05:28 - 05:32] является производным по типам школ например