- •Вопрос 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. Природа классов. Отношения между классами. Типы отношений.
Вопрос 6. Понятие конструктора .Использование констр-ра с аргументами по умолчанию. Конструктор по умолчанию.
После создания объекта его эл-ты могут быть инициализированы с помощью ф-ции конструктор. Конструктор — это ф-ция-эл-т класса с тем же именем, что и класс. Ф-я-конструктор – инициализирует объект во время его создания. Конструктор вызывается автоматически во время создания (объявления) объекта. При инициализации глобальн. или static объектов конст-р вызыв. 1 раз; для локальн. объектов – всякий раз, когда встреч. объявление объекта.
Если для класса были описаны конструкторы, то невозможно описать переменную этого класса так, чтобы констр-р не был вызван.
Данные-элементы класса не могут получать начальные значения в определении класса. Они либо должны получить эти значения в конструкторе класса, либо их значения можно установить позже, после создания объекта. Конструкторы не могут указывать типы возвращаемых значений или возвращать какие-то значения. Конструкторы можно перегружать, чтобы обеспечить множество начальных значений объектов класса.
Использование конструкторов с аргументами по умолчанию
Конструктор может содержать значения аргументов по умолчанию. Задание в конструкторе аргументов по умолчанию позволяет гарантировать, что объект будет находиться в непротиворечивом состоянии, даже если в вызове конструктора не указаны никакие значения. Конструктор, у к-го все аргументы — аргументы по умолчанию (или который не требует никаких аргументов), называется конструктором с умолчанием, т.е. конструктором, к-ый можно вызывать без указания каких-либо аргументов.
Применение аргумента по умолчанию явл-ся скрытой формой перегрузки ф-ций. Например: void f(int a=0, int b=0);
Теперь эту функцию можно вызывать тремя способами: с двумя заданными аргументами, с первым заданным аргументом(b по умолчанию =0), без аргументов. Пример: f(); \\ a=0 b=0
f(10); \\ a=10 b=0
f(10, 99); a=10 b=99
Невозможно передать по умолчанию значение а и при этом задать b. Аргументы по умолчанию нельзя задавать одновременно в определении и в прототипе ф-ции. Аргументы по умолчанию должны быть константными или глобальными переменными. Они не могут быть локальными переменными или другими параметрами.
Вопрос 7. Понятие деструктора. Когда вызывается конструктор и деструктор.
Конструкторы инициализируют объект. Некоторым классам требуется функция, которая будет гарантированно вызвана при уничтожении объекта, аналогично конструктору при создании объекта. Такие функции наз-ся—деструкторы (специальная функция-элемент класса). Они очищают память и освобождают ресурсы. Деструкторы вызываются неявно, когда автоматическая переменная выходит из области видимости, удаляется объект, хранящийся в свободной памяти. Наиболее часто деструктор используется для освобождения памяти, выделенной конструктором. Имя деструктора совпадает с именем класса, но перед ним ставится символ тильда (~). Конструкторы и деструкторы вызываются автоматически. Порядок вызова зависит от области видимости объектов. Для любых объектов конструктор вызывается перед выполнением любой другой функции, включая функцию main. Деструктор вызывается после выполнения функции main или если идёт вызов функции exit. Деструктор не вызывается если выполнение программы прекращено с помощью функции abort.
Деструктор не принимает никаких параметров и не возвращает никаких значений. Класс может иметь только один деструктор — перегрузка деструктора не разрешается.
Конструкторы объектов, объявленных в глобальной области действия, вызываются раньше, чем любая функция данного файла (включая main) начинает выполняться. Соответствующие деструкторы вызываются, когда завершается main или когда вызывается функция exit.
Конструкторы автоматических локальных объектов вызываются, когда процесс выполнения достигает места, где объекты объявляются. Соответствующие деструкторы вызываются, когда покидается область действия объектов (т.е. покидается блок, в котором эти объекты объявлены). Конструкторы и деструкторы для автоматических объектов вызываются каждый раз при входе и выходе из области действия.
Конструкторы статических локальных объектов вызываются сразу же, как только процесс выполнения достигает места, где объекты были впервые объявлены. Соответствующие деструкторы вызываются, когда завершается main или когда вызывается функция exit.