Содержание
- 2. Базовый и производный тип Если класс B публично произведен из базового класса A , то по
- 3. Наследование и полиморфизм Наследование позволяет писать полиморфные функции (не различать аргументы классов, имеющих общего предка) сохранить
- 4. Родственные классы class Text_Window : public Window { public: Text_Window(const Point& , const Point& , const
- 5. Полиморфизм: функция blank #include “window.h” // функция использует только общие // для всех видов окон методы
- 6. Использование функции blank #include “window.h” #include “dos.h” // для sleep void blank(Window&); void main( int, char*[
- 7. Использование строгой типизации // функция может работать только с окном вида Input_Window int yes_or_no(Input_Window& w, const
- 8. Функция collapse #include “window.h” // функция очищает и уменьшает окно // использует только общие // для
- 9. Использование функции collapse #include “window.h” void collapse(Window&); void main( int, char*[ ] ) { Window w(Point(10,2),
- 10. Проблема связывания При вызове функции collapse с фактическим аргументом типа Shell_Window какой метод будет вызываться? Window::change_size(const
- 11. Два вида связывания Статическое или раннее связывание выбор вызываемой функции осуществляется на этапе компиляции определяется по
- 12. Функция collapse При статическом связывании в функции collapse всегда будет вызываться метод класса Window согласно объявлению
- 13. Динамическое связывание Отвечает принципам ООП Многие объектно-ориентированные языки используют только динамическое связывание Объект, как экземпляр класса,
- 14. Выбор вида связывания в С++ В С++ по умолчанию используется статическое связывание Чтобы применить динамическое связывание
- 15. Базовый класс Window class Window { public: Window( const Point& upleft, const Point& size, const String&
- 16. Как поступать? Объявлять методы виртуальными по мере необходимости минус – изменение кода базового класса плюс –
- 17. Полиморфные массивы #include “window.h” #include void collapse(Window&); void main( int, char*[ ] ) { Window w(Point(10,2),
- 18. Копирование и присваивание #include “window.h” void collapse2( Window w ) { w.clear(); w.change_size( Point(5,5) ); }
- 19. Проблема деструктора при наследовании class A { public: A( ); ~A( ); …….. }; void main(
- 20. Виртуальный деструктор базового класса class A { public: A( ); virtual ~A( ); …….. }; void
- 22. Скачать презентацию