- •Основы ооп. Понятие инкапсуляции, наследования и полиморфизма.
- •Класс в ооп и его основные компоненты.
- •Перегрузка функций.
- •Уровни доступа к элементам класса.
- •Область видимости объектов, скрытие имен.
- •Динамическая память, функции работы с памятью.
- •Динамическая память, операции работы с памятью.
- •Передача аргументов в функцию по умолчанию.
- •11. Характеристика элементов-данных класса.
- •13. Указатель «this». Пример явного использования.
- •Void load_i (int val) {
- •14. Функции-друзья класса.
- •15. Функции-конструкторы. Явный и косвенный вызов конструктора.
- •16. Функции-деструкторы.
- •17. Методы класса с атрибутом «const».
- •18. Статические методы и данные. Атрибут «static»
- •23. Виртуальный базовый класс.
- •25. Виртуальные функции. Переопределение виртуальных функций.
- •26. Понятие абстрактного класса.
- •27. Перегрузка операций.
- •28. Особенности перегрузки операций при помощи методов класса и функций-друзей.
- •29. Перегрузка методами класса.
- •30. Использование ссылок при перегрузке унарных операций.
- •31. Стандартная библиотека. Общая характеристика.
- •32. Строковый класс стандартной библиотеки.
- •2. String (const char *str);
- •3. String (const string &str);
- •Insert() - вставка символов одной строки в другую
- •33. Контейнерные классы.
- •Vector - динамический массив
- •34. Итераторы.
- •Категории итераторов
- •Операции доступные итераторам
- •35. Алгоритмы.
- •36. Потоковые классы.
- •37. Управление выводом. Манипуляторы и флажки.
- •38. Файловые потоки.
- •39. Шаблоны функций
- •40. Шаблоны классов.
- •41. Обработка исключений. Общая характеристика.
- •42. Вложенные классы.
- •43. Классы и указатели при наследовании.
- •44. Многократная перегрузка операций.
- •46. Указатель типа «void».
- •47. Адрес в качестве возвращаемого значения функции.
- •48. Операция «typeid».
- •49. Виды обработчиков исключительных операций.
- •50. Отличие вызова функций от вызова обработчика исключительной ситуации.
- •51. Создание собственного завершающего кода при перехвате исключительной ситуации.
- •52. Форма конструктора со списком инициализации.
25. Виртуальные функции. Переопределение виртуальных функций.
Виртуальная функция – это функция, которая объявляется в базовом классе с использованием ключевого слова virtual и переопределяется в одном или нескольких производных классах. Таким образом, если базовый класс содержит виртуальную функцию и если из этого базового класса выведено два(или больше) производных класса, то при адресации различных типов объектов через указатель (или ссылку)на базовый класс будут выполняться и различные версии виртуальной функции.
При переопределении виртуальной функции в производном классе ключевое слово virtual повторять не нужно.
Тип и количество параметров у версий переопределенной функции должны совпадать, иначе она будет просто перегруженной и механизм переопределения не сработает.
Виртуальная функция должна быть членом класса, для которого она переопределяется, а не его другом.
Функции деструкторов можно переопределять через виртуальность, а функции конструкторов – нет.
При вызове виртуальной функции через оператор «точка»(не указатель и не ссылка) переопределение не работает.
26. Понятие абстрактного класса.
Класс, который содержит хотя бы одну чисто виртуальную функцию, называется абстрактным.
( Чисто виртуальная функция – это функция, объявленная в базовом классе, но не имеющая в нем никакого определения).
У абстрактного класса не может быть объектов. Он м. быть только базовым для создания производных классов.
Абстрактный класс можно использовать для объявления указателей и ссылок.
27. Перегрузка операций.
Для перегрузки операции для класса в С++ используется следующий синтаксис:
<Тип> operator <операция>(<входные параметры>) { <операторы>; }
где < Тип > – тип, возвращаемый функцией;
operator – ключевое слово;
< операция > – перегружаемая операция.
В языке С++ имеются следующие ограничения на перегрузку операций:
- С++ не различает префиксную и постфиксную формы ++ и - -;
- переопределяемая операция должна присутствовать в языке (например, нельзя определить операцию с символом #);
- нельзя переопределить операторы, заданные следующими символами: . * :: ? ;
- переопределенные операции сохраняют свой изначальный приоритет.
Перегрузка операций может выполняться функциями-членами класса и функциями, которые не являются членами класса.
При перегрузке бинарной операции функцией-членом класса, объект, стоящий слева от операции, вызывает операторную функцию и передается ей неявно через указатель this. Объект, расположенный справа от операции(оператора) , передается операторной функции как параметр.
При перегрузке унарной операции функцией-членом класса, объект передается через указатель this.
Бинарные операторные функции, которые не являются членами класса, имеют два параметра, а унарные – один.
28. Особенности перегрузки операций при помощи методов класса и функций-друзей.
Перегрузка операций может выполняться при помощи методов класса и функциями-друзьями.
При перегрузке бинарной операции при помощи методов класса, объект, стоящий слева от операции, вызывает операторную функцию и передается ей неявно через указатель this. Объект, расположенный справа от операции(оператора) , передается операторной функции как параметр.
При перегрузке унарной операции при помощи методов класса, объект передается через указатель this.
Бинарные операторные функции, которые являются друзьми класса, имеют два параметра, а унарные – один.