Difference between revisions of "Step 5 (S-10692)"
(Create page for step id=10692) |
|||
Line 1: | Line 1: | ||
Step on Stepik: https://stepik.org/lesson/557/step/5 | Step on Stepik: https://stepik.org/lesson/557/step/5 | ||
− | + | [[File:Step_5_(S-10692)_1.png|border|800px]] | |
[00:00 - 00:16] довольно часто воды к нормативно программировании применяется понять interface интерфейс это абстрактный класс у которого отсутствует поля а все методы являются абстрактной в применении к и + + это означает что все это должно быть чистым виртуальными не должна отсутствуют реализации | [00:00 - 00:16] довольно часто воды к нормативно программировании применяется понять interface интерфейс это абстрактный класс у которого отсутствует поля а все методы являются абстрактной в применении к и + + это означает что все это должно быть чистым виртуальными не должна отсутствуют реализации | ||
Line 15: | Line 15: | ||
− | + | [[File:Step_5_(S-10692)_2.png|border|800px]] | |
− | + | [[File:Step_5_(S-10692)_3.png|border|800px]] | |
[01:07 - 01:25] можно было бы определить и деструктор чистым виртуальным но добавить к нему реализации но в данном случае никакого толка от этого не будет другой пример интерфейсы это интерфейс который могли поддерживать те классы объекты которых можно | [01:07 - 01:25] можно было бы определить и деструктор чистым виртуальным но добавить к нему реализации но в данном случае никакого толка от этого не будет другой пример интерфейсы это интерфейс который могли поддерживать те классы объекты которых можно | ||
− | + | [[File:Step_5_(S-10692)_4.png|border|800px]] | |
− | + | [[File:Step_5_(S-10692)_5.png|border|800px]] | |
[01:25 - 01:40] копировать то есть дать такие класс могли бы реализовать себя метод который возвращает указатель на новую копию по указателю собственно на | [01:25 - 01:40] копировать то есть дать такие класс могли бы реализовать себя метод который возвращает указатель на новую копию по указателю собственно на | ||
− | + | [[File:Step_5_(S-10692)_6.png|border|800px]] | |
[01:40 - 01:55] интерфейса иконок то есть мы не знаем какой конкретный тип то поэтому указатель лежит но мы можем внутри реализации этого метода создать копию объекта и вернуть его показательно например такой | [01:40 - 01:55] интерфейса иконок то есть мы не знаем какой конкретный тип то поэтому указатель лежит но мы можем внутри реализации этого метода создать копию объекта и вернуть его показательно например такой | ||
− | + | [[File:Step_5_(S-10692)_7.png|border|800px]] | |
− | + | [[File:Step_5_(S-10692)_8.png|border|800px]] | |
[01:55 - 02:11] интерфейс могут поддержать класс трошин можно было бы в реализации этого метода com создать копию человека | [01:55 - 02:11] интерфейс могут поддержать класс трошин можно было бы в реализации этого метода com создать копию человека | ||
− | + | [[File:Step_5_(S-10692)_9.png|border|800px]] | |
[02:11 - 02:26] при помощи оператора new динамической памяти и скопировать и помощью конструктора в конструктор копирования мы передадим ссылку на текущий момент не вернешь | [02:11 - 02:26] при помощи оператора new динамической памяти и скопировать и помощью конструктора в конструктор копирования мы передадим ссылку на текущий момент не вернешь | ||
− | + | [[File:Step_5_(S-10692)_10.png|border|800px]] | |
[02:26 - 02:42] заметим что + тут позволяет в качестве указателя при реализации таких методов в пригодны классов указывать указатель на производные типа то есть то что здесь в сигнатуре мы ожидаем | [02:26 - 02:42] заметим что + тут позволяет в качестве указателя при реализации таких методов в пригодны классов указывать указатель на производные типа то есть то что здесь в сигнатуре мы ожидаем | ||
Line 54: | Line 54: | ||
− | + | [[File:Step_5_(S-10692)_11.png|border|800px]] | |
[03:01 - 03:16] только набор методов которые должны реализовывать производные классы это большое отличие от абстрактного класса который кроме набор методов может еще задавать некоторую реализацию которой будет наследоваться производными классами | [03:01 - 03:16] только набор методов которые должны реализовывать производные классы это большое отличие от абстрактного класса который кроме набор методов может еще задавать некоторую реализацию которой будет наследоваться производными классами | ||
− | + | [[File:Step_5_(S-10692)_12.png|border|800px]] | |
[[Category:Steps]] | [[Category:Steps]] | ||
[[Category:Особенности наследования в C++ (L-557)| 5]] | [[Category:Особенности наследования в C++ (L-557)| 5]] |
Latest revision as of 12:48, 7 August 2017
Step on Stepik: https://stepik.org/lesson/557/step/5
[00:00 - 00:16] довольно часто воды к нормативно программировании применяется понять interface интерфейс это абстрактный класс у которого отсутствует поля а все методы являются абстрактной в применении к и + + это означает что все это должно быть чистым виртуальными не должна отсутствуют реализации
[00:16 - 00:34] и все это не касается деструкторов destructor хоть может быть чистым виртуальным но у него обязана быть реализации дело в том что деструктор производного класса всегда в конце вызывать деструктор базового класса этого этого базовым классом не определим какой то реализации деструктор то у нас произойдет ошибка компиляции
[00:34 - 00:50] на данном слайде я привел 2 примера interface интерфейс i конвертик букву названия значит это интерфейс это просто некоторые соглашение об именовании такой то не смогли поддержать
[00:50 - 01:07] все классы объекты которых можно преобразовать строчки то есть они могли бы определить у себя нет то стринг которое дорожает строковое представление объект так как в данном интерфейсе есть виртуально методы то я определяю деструктор виртуальным
[01:07 - 01:25] можно было бы определить и деструктор чистым виртуальным но добавить к нему реализации но в данном случае никакого толка от этого не будет другой пример интерфейсы это интерфейс который могли поддерживать те классы объекты которых можно
[01:25 - 01:40] копировать то есть дать такие класс могли бы реализовать себя метод который возвращает указатель на новую копию по указателю собственно на
[01:40 - 01:55] интерфейса иконок то есть мы не знаем какой конкретный тип то поэтому указатель лежит но мы можем внутри реализации этого метода создать копию объекта и вернуть его показательно например такой
[01:55 - 02:11] интерфейс могут поддержать класс трошин можно было бы в реализации этого метода com создать копию человека
[02:11 - 02:26] при помощи оператора new динамической памяти и скопировать и помощью конструктора в конструктор копирования мы передадим ссылку на текущий момент не вернешь
[02:26 - 02:42] заметим что + тут позволяет в качестве указателя при реализации таких методов в пригодны классов указывать указатель на производные типа то есть то что здесь в сигнатуре мы ожидаем
[02:42 - 03:01] указатель на базовый класс в производном классе мы можем вернуть указатель на произвольный класса я здесь при этот преобразования значит отличие интерфейса от абстрактного класса заключается в том что интерфейс задает
[03:01 - 03:16] только набор методов которые должны реализовывать производные классы это большое отличие от абстрактного класса который кроме набор методов может еще задавать некоторую реализацию которой будет наследоваться производными классами