- •Вопрос 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. Природа классов. Отношения между классами. Типы отношений.
Вопрос 26. Понятие виртуальной функции.
Вирт-я ф-я – ф-я, определённая с ключевым словом virtual в базовом классе и переопределёная в одном или нескольких производных классах. При вызове объекта производного класса с помощью указателя или ссылки на него, выбор ф-ции определяется во время выполнения программы. Для разных объектов вызываются разные версии одной и той же вирт-й ф-ции. Класс, содержащий одну или боле виртуальных ф-й, называется полиморфным классом.
Когда ф-ция переопределяется в производном классе, повторять слово virtual необязательно.
Ключевым моментом в исп-и вирт-й ф-ции для обеспечения полиморфизма времени исполнения служит то, что исп-ся именно ук-ль на баз класс.
Ф-ция должна соответствовать прототипу. Также вирт ф-ция должна быть членом, а не другом класса, для к-го она определена. Если ф-ция была определена как виртуальная, то она и остается такой вне зависимости от иерархии класса
Она может быть другом для другого класса. Конструктор не м. б. виртуальным.
Если вирт ф-ция не переопределяется в классе, то исп-ся её версия из баз класса.
Осн св-ва исп-я вирт ф-ий:
- вирт мех-м поддерж полиморфизм на этапе вып-ия программы.
- вирт ф-ии можно объявить только в классах и стр-рах
- вирт ф-ии не могут быть static
- для вызова вирт ф-и требуется больше времени чем для невиртуальной
Вопрос 27. Понятие полиморфизма.
Полиморфизм – концепция, утвержд., что экземпляры произв. классов при необходимоти могут представлять себя как экземпляры базового класса.
Полиморфизм—возможность для объектов разных классов, связанных с помощью наследования, реагировать различным образом при обращении к одной и той же функции-элементу. Полиморфизм реализуется посредством виртуальных функций.
Базовый класс определяет общий интерфейс, к-ый имеют все производные от него классы, и вместе с тем полиморфизм позволяет производным классам иметь свои собственные реализации методов. Благодаря этому полиморфизм можно определить как «один интерфейс – множество методов». Отделение интерфейса от реализации позволяет создавать библиотеки классов.
Вопрос 28. Абстрактные и конкретные базовые классы.
Абстрактный родительский класс — это класс, не имеющий экземпляров. Он используется только для порождения подклассов. Суперкласс, объекты к-го никогда не будут реализованы, в к-ом заданы только атрибуты и сигнатуры операций, но не определены методы, реализующие его операции, называется абстрактным классом
Он имеет хотя бы одну чисто виртуальную ф-цию. Класс не может иметь объектов, так как в нем не определены операции над объектами; объекты должны принадлежать конкретным подклассам абстрактного класса.
Главное назначение абстр классов – опрелеление интерфейса и его реализация для некот иерархии классов.
Классы, объекты к-рых могут быть реализованы, называются конкретными классами.
Виртуальные базовые классы. Они всегда инициализируются лишь один раз вызовом безаргументного конструктора (если обращение к нему не осуществляется пользователем, такой конструктор вызывается системой). Это происходит до какой бы то ни было другой инициализации. Чистой виртуальной ф-цией явл-ся такая ф-ция, у к-ой в ее объявлении тело определено как 0 (инициализатор равен 0); например:
virtual float earnings( ) const = 0; // чистая виртуальная ф-ция