Step 10 (S-11543)
Step on Stepik: https://stepik.org/lesson/564/step/10
<img width="50%" src="https://ucarecdn.com/19afaa8e-145a-486e-93b0-9aef788cebd9/">
[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 у нас очень устала значением типа да логично будет работать и оператор присваивания ну так вот описание
<img width="50%" src="https://ucarecdn.com/e7f8eac9-c2ee-4fe5-9883-42d9fc141445/">
[02:47 - 03:04] позволит сделать например обратно с можно бы после такой конвертации присвоить массиву а массив б и внутри этого оператора предстанем пред обратное преобразование от значения типа double грачевым типа нет
<img width="50%" src="https://ucarecdn.com/d9df3f4f-05bd-4578-b361-1402f32b5331/">
<img width="50%" src="https://ucarecdn.com/50a0a8cc-2db4-4a31-ae06-e6f529d40a11/">
[03:04 - 03:19] важно отметить что так же как и другие методы класса шаблоны методы можно определять снаружи класс обычно затруднения вызывает когда мы снаружи класса определяем
[03:19 - 03:34] шаблонный метод шаблонного класса от в данном случае оператор присваивания шаблон оператор присваивания которой мы здесь объявили можно определить с наружи класса так отношениям класс является шаблоном
<img width="50%" src="https://ucarecdn.com/38ae3448-9b98-4769-a9ab-14faacbd1ad5/">
[03:34 - 03:53] то оператор присваивания будет шаблоны методом шаблонного класса для того чтобы его определить снаружи казался ему нужно задать 2 шаблонным заголовкам 1 шаблоны заголовок 1 он будет соответствовать шаблонному заголовку снова класса
<img width="50%" src="https://ucarecdn.com/de61f366-f88a-4c40-b8c8-4d87e3bc0fd8/">
<img width="50%" src="https://ucarecdn.com/67d9ea0b-cfc0-4dc4-bdf9-93e7e76de9b2/">
[03:53 - 04:11] соответствует типу из параметров класс эры 2 шаблоны заголовок будет соответствовать шаблону заголовку непосредственно при этом когда мы будем указывать
<img width="50%" src="https://ucarecdn.com/5b433b55-334d-4844-bdba-d579c1d79a58/">
[04:11 - 04:29] тип до которого мы переопределяем данный метод мы должны будем указывать полное имя типа то есть мы должны будем указывать re с подставленным шаблоны параметром type 10 ты здесь указывается
<img width="50%" src="https://ucarecdn.com/34af1743-4cde-41bb-8878-e07fcc9978d5/">
<img width="50%" src="https://ucarecdn.com/4499e7d1-7ecf-4dc0-9880-087abb142730/">
[04:29 - 04:44] конкретный тип уже то есть внутри класса мы можем позволить себе указывать просто эры но при реализации мы должны уже указывать полное название типа
<img width="50%" src="https://ucarecdn.com/4dbf602c-f745-481d-b9cf-299185d825c8/">