Step 10 (S-11543)

From Stepik Wiki
Revision as of 13:09, 7 August 2017 by Admin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

Step 10 (S-11543) 1.png

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


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


[00:32 - 00:50] конструктор по умолчанию конструктор копирования оператор присваивания и деструктор вот это 4 метода который генерирует с компилятором это 4 метода не могут быть шаблонными еще метод который не может быть шаблон это виртуальный метод не может быть шагом


[00:50 - 01:06] поэтому несмотря на то что данные методы конструктор и оператор присваивания выглядит как будто это конструктор копирования оператор присваивания и даже можно аргументировать что если мы подставим


[01:06 - 01:22] вместо значение шаблонного параметра подставим значение соответствующее type то данный конструктор будет конструктором копирования но так по стандарту это запрещено то вдобавок к этому конструктору этому оператору почтовой ногой


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


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


[01:56 - 02:13] мы определим некоторый массив целых чисел как ты его запомним после этого можно будет скопировать массив другого типа в том случае если есть приведение от


[02:13 - 02:30] значение типа int к этому типу например можно будет определить массив double и сконструировать его от массива типа тогда при копировании вот в этой строчке


[02:30 - 02:47] произойдет привидение значение типа int у нас очень устала значением типа да логично будет работать и оператор присваивания ну так вот описание


Step 10 (S-11543) 2.png

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


Step 10 (S-11543) 3.png

Step 10 (S-11543) 4.png

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


[03:19 - 03:34] шаблонный метод шаблонного класса от в данном случае оператор присваивания шаблон оператор присваивания которой мы здесь объявили можно определить с наружи класса так отношениям класс является шаблоном


Step 10 (S-11543) 5.png

[03:34 - 03:53] то оператор присваивания будет шаблоны методом шаблонного класса для того чтобы его определить снаружи казался ему нужно задать 2 шаблонным заголовкам 1 шаблоны заголовок 1 он будет соответствовать шаблонному заголовку снова класса


Step 10 (S-11543) 6.png

Step 10 (S-11543) 7.png

[03:53 - 04:11] соответствует типу из параметров класс эры 2 шаблоны заголовок будет соответствовать шаблону заголовку непосредственно при этом когда мы будем указывать


Step 10 (S-11543) 8.png

[04:11 - 04:29] тип до которого мы переопределяем данный метод мы должны будем указывать полное имя типа то есть мы должны будем указывать re с подставленным шаблоны параметром type 10 ты здесь указывается


Step 10 (S-11543) 9.png

Step 10 (S-11543) 10.png

[04:29 - 04:44] конкретный тип уже то есть внутри класса мы можем позволить себе указывать просто эры но при реализации мы должны уже указывать полное название типа


Step 10 (S-11543) 11.png