- •Вопрос 1. Ссылки и ссылочные параметры.
- •Вопрос 2. Перегрузка функций.
- •Вопрос 3. Шаблоны функций.
- •Вопрос 4. Использование const с указателями.
- •Вопрос 5. Область действия класса. Управление доступом к членам класса. Отделение интерфейса от реализации.
- •Вопрос 6. Понятие конструктора .Использование констр-ра с аргументами по умолчанию. Конструктор по умолчанию.
- •Вопрос 7. Понятие деструктора. Когда вызывается конструктор и деструктор.
- •Вопрос 8. Константные объекты и функции-члены.
- •Вопрос 9. Дружественные функции и друж. Классы.
- •Вопрос 10. Указатель this.
- •Вопрос 11. Операции new и delete.
- •Вопрос 12. Статические члены класса.
- •Вопрос 13. Понятие перегрузки операций.
- •Вопрос 14. Функции-операции как члены класса и как друж-е функции
- •Вопрос 15. Перегрузка операций ввода/вывода в поток, бинар и унар операций.
- •Вопрос 17. Перегрузка операций индексации массива.
- •Вопрос 18. Понятие наследования. Механизм ограничения доступа при наследовании.
- •Вопрос 19. Приведение типа указателя базового класса к указателю производного класса и наоборот.
- •Вопрос 21. Конструкторы и деструкторы в производных классах.
- •Вопрос 22. Неявное преобразование объектов производных классов в объекты базового класса.
- •Вопрос 23. Иерархия классов. Уровни наследования.
- •Вопрос 24. Множественное наследование.
- •Вопрос 25. Неопределённость при множ-м наследовании. Включение «классы в классах».
- •Вопрос 26. Понятие виртуальной функции.
- •Вопрос 27. Понятие полиморфизма.
- •Вопрос 28. Абстрактные и конкретные базовые классы.
- •Вопрос 29. Статическое и динамическое связывание.
- •Вопрос 30. Виртуальные деструкторы.
- •Вопрос 31. Шаблоны классов.
- •Вопрос 32. Шаблоны классов и пользовательские типы
- •Вопрос 33. Шаблоны и наследование.
- •Вопрос 34. Классы и объекты потоков ввода/вывода. Иерархия потоковых классов.
- •Вопрос 35, 38. Предопределённые потоковые объекты. Состояние ошибок потока.
- •Вопрос 36. Манипуляторы потоков.
- •Вопрос 37. Неформатированный ввод/вывод с помощью read/ write
- •Вопрос 38. Состояние ошибок ввода/вывода
- •Вопрос 39. Понятие исключения. Когда должна использоваться обработка исключений.
- •Вопрос 40. Генерация исключений. Повторная генерация исключений.
- •Вопрос 41. Перехват исключений.
- •Вопрос 42. Спецификация исключений. Обработка неожиданных исключений.
- •Вопрос 43. «Раскручивание» стека. Иерархия исключений стандартной библиотеки.
- •Вопрос 44. Конструкторы, деструкторы и исключения. Исключения и наследование.
- •Вопрос 45. Обработка неуспешного выполнения new.
- •Вопрос 46. Класс auto_ptr и динамич выделение памяти.
- •Вопрос 47. Static_cast, reinterpret_cast
- •Вопрос 48. Инфо о типе времени выполнения. Оператор dynamic_cast
- •Вопрос 49. Ключевое слово explicit.
- •Вопрос 50. Ключевое слово mutable.
- •Вопрос 51. Указатели на члены класса.
- •Вопрос 52. Множественное наследование. Виртуальные базовые классы.
- •Вопрос 53. Классы-контейнеры и классы-итераторы.
- •Вопрос 54. Понятие ооп. Три условия ооп-программы. Парадигмы ооп.
- •Вопрос 55.Основные составляющие объектного подхода: абстрагирование, инкапсуляция, модульность.
- •Вопрос 56. Основные составляющие объектного подхода: иерархия, типизация, полиморфизм.
- •Вопрос 57. Природа объекта. Состояние, поведение, идентичность объекта.
- •Вопрос 58. Отношения между объектами. Связи. Агрегация.
- •Вопрос 59. Природа классов. Отношения между классами. Типы отношений.
Вопрос 23. Иерархия классов. Уровни наследования.
Базовый класс описывает общие черты объектов. Все классы, порожденные базовым классом, наследуют возможности этого базового класса. Производные классы затем пополняются дополнительными по сравнению с унаследованными от базового класса возможностями. Производный класс сам может быть базовым классом. Например:
class employee{ ... };class secretary:employee { ... }; class manager:employee{... };class temporary:employee{ ... }; class consultant:temporary{ ... };class director: manager { ... }; class vice_president : manager { ... }; class president :vice_president { ... };
Такое множество родственных классов принято называть иерархией классов. Поскольку выводит родственный класс можно только из одного базового класса, такая иерархия называется деревом и не может быть графом более общей структуры.
class temporary_secretary : temporary : secretary { ... }; class consultant : temporary : employee { ... };
Вопрос 24. Множественное наследование.
Класс может порождаться более, чем от одного базового класса; такое порождение называется множественным наследованием. Множественное наследование означает, что производный класс наследует эл-ты нескольких базовых классов. Для этого используется список базовых классов, в к-ом каждый из базовых классов отделён от других запятой. Множ-ное наследование указывается двоеточием (:) после имени класса с последующим перечислением ч/з запятую базовых классов.
class X{};
class Y{};
class Z : public X, public Y{};
поскольку класс Z наследует оба класс X и Y, то он имеет доступ к публичным и защищённым членам обоих классов X и Y.
Конструкторы базовых классов вызываются слева направо; деструкторы – наоборот.
Существуют две специфические для множ-ного наследования проблемы:
** как разрешить конфликты имен м/у суперклассами
** что делать с повторным наследованием.
Для устранения конфликта разрешается добавить к именам префиксы, указывающие имена классов, откуда они пришли.
Вопрос 25. Неопределённость при множ-м наследовании. Включение «классы в классах».
При наследовании от различных классов члены с идентичными именами могут возникать неопределенности. Подобные наследования допускаются при условии, что не дает двусмысленных ссылок на такой объект. При множественном наследовании 2 базовых класса могут быть получены от общего предка. Такой класс будет иметь 2 подобъекта общего предка. Если подобное дублирование нежелательно, его можно явно развести две копии унаследованного элемента, добавляя к именам префиксы в виде имени класса-источника, можно избежать с помощью виртуального наследования, а так же включением – когда полем в классе явл объект другого класса
Классы как элементы других классов
Класс может включать в себя объекты других классов в кач-ве эл-тов. Это один из способов повторного использования программного обеспечения, когда класс ключает в себя объекты других классов в кач-ве Эл-тов. Объекты-эл-ты создаются в том порядке, в к-ом они объявлены (а не в том, в к-ом перечислены в списке инициализаторов эл-тов конструктора), и до того, как будут созданы объекты включающего их класса.
Если инициализаторы Эл-тов не заданы, конструктор с умолчанием объекта-эл-та будет вызван автоматически. Значения, если они были установленные конструктором с умолчанием, могут быть, затем изменены с помощью функции set