- •Основы ооп. Понятие инкапсуляции, наследования и полиморфизма.
- •Класс в ооп и его основные компоненты.
- •Перегрузка функций.
- •Уровни доступа к элементам класса.
- •Область видимости объектов, скрытие имен.
- •Динамическая память, функции работы с памятью.
- •Динамическая память, операции работы с памятью.
- •Передача аргументов в функцию по умолчанию.
- •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. Форма конструктора со списком инициализации.
Область видимости объектов, скрытие имен.
При наследовании члены базового класса становятся членами производного класса. Область видимости объектов(членов) базового класса в производном определяется спецификатором доступа, указываемом при создании производного класса. Спецификатор выражается одним из слов: public, private, protected.
- Если базовый класс наследуется как public-класс, то все его public-члены становятся public-членами.
- Во всех случаях private-члены остаются закрытыми в рамках этого класса и не доступны для объектов производного класса.
Модификатор прав доступа используется для изменения доступа к наследуемым объектам в соответствии с правилами, указанными в таблице 1.
Таблица 1 – Доступ в классах при наследовании
-
Доступ в базовом классе
Модификатор прав доступа
Доступ в производном классе
private
private
не доступны
private
public
не доступны
protected
private
private
protected
public
protected
public
private
private
public
public
public
Динамическая память, функции работы с памятью.
Динамическая память – это память, полученная программой во время ее выполнения. Динамическая память выделяется из раздела свободной памяти, расположенной между программой и стеком.
Язык С не содержит операторов для работы с динамической памятью new и delete. Поэтому для совместимости с языком С в языке С++ используются функции malloc() и free() .
Функция malloc() предназначена для выделения динамической памяти.
Void *malloc (num_bytes); Функция возвращает указатель типа void.
Функция free() предназначена для освобождения динамической памяти.
Void free(void *ptr);
Динамическая память, операции работы с памятью.
Динамическая память – это память, полученная программой во время ее выполнения. Динамическая память выделяется из раздела свободной памяти, расположенной между программой и стеком.
Оператор new позволяет динамически выделить область памяти.
Формат оператора:
переменная_указатель = new тип переменной;
Оператор delete освобождает ранее выделенную динамическую память.
Формат оператора:
delete переменная_указатель ;
Ссылки в С++. Отличие ссылок от переменных-указателей.
-----Понятие ссылки возникло в связи с необходимостью передачи аргументов в функцию(процедуру, метод). Есть два метода :
- передача аргументов по значению; Код функции не может изменить аргументы, используемые при вызове/
- передача аргументов по ссылке. Код функции может изменить аргументы, используемые при вызове.
В случае передачи аргументов по ссылке, в параметр функции копируется адрес аргумента,
а не его значение. Такая возможность реализуется с помощью ссылочного параметра функции. Ссылочный параметр объявляется с помощью символа &
Объявляется функция, например, f(int &x, int &y); Вызывается - f(i,j)
Отличие: ссылка содержит адрес конкретной переменной, а переменной-указателю можно присваивать адреса разных(однотипных) переменных.
------!!! « Передачу аргументов по ссылке» можно реализовать искусственно через «передачу аргументов по значению» используя переменные-указатели, т.е.
при описании функции указать, что аргументом будет указатель, например, f(int *i), а при вызове функции в аргумент поместить указатель на передаваемое значение. Например,
f(p), где p =&j
!!! При применении ссылочных переменных есть ряд ограничений:
- нельзя ссылаться на ссылочную переменную;
- нельзя создавать массив ссылок;
- нельзя создавать указатель на ссылку,т.е. нельзя применить оператор &;
- ссылки не разрешено использовать для битовых полей структур.