
- •1. Основы ооп. Понятие инкапсуляции, наследования и полиморфизма.
- •Ограничение на наследование
- •2. Класс в ооп и его основные компоненты.
- •Объявление класса
- •3. Перегрузка функций.
- •4. Уровни доступа к элементам класса.
- •5. Область видимости объектов, скрытие имен.
- •6. Динамическая память, функции работы с памятью.
- •7. Динамическая память, операции работы с памятью.
- •9. Передача аргументов в функцию по умолчанию.
- •10. Понятие класса, общая структура.
- •Объявление класса
- •11. Характеристика элементов-данных класса.
- •12. Характеристика методов класса. Использование операции привязки «::»
- •13. Указатель «this». Пример явного использования.
- •14.Функции-друзья класса.
- •15. Функции-конструкторы. Явный и косвенный вызов конструктора.
- •16. Функции-деструкторы.
- •17. Методы класса с атрибутом «const».
- •18. Статические методы и данные. Атрибут «static»
- •19. Указатели на компоненты класса
- •20. Наследование. Базовый и производный классы.
- •21.Инициализация объектов при наследовании
- •22. Указатели на производный и базовый классы. Формат явного преобразования указателей на базовый класс.
- •23.Виртуальный базовый класс
- •24.Консруктор во множественном наследовании
- •25.Виртуальные функции. Переопределение виртуальной функции.
- •26.Понятие абстрактного класса
- •29. Перегрузка методами класса
- •34.Итераторы
- •35.Алгоритмы
- •36. Потоковые классы.
- •37.Управление выводом. Манипуляторы и флажки.
- •38. Файловые потоки.
- •39.Шаблоны функций
- •40.Шаблоны классов.
- •46. Указатель типа «void».
- •48. Операция «typeid»
35.Алгоритмы
Алгоритмы предназначены для работы с контейнерами и другими последовательностями. Каждый алгоритм реализован в виде шаблона или набора шаблонов функции, поэтому может работать с различными видами последовательностей и данными разнообразных типов. Для настройки алгоритма на конкретные требования пользователя применяються функциональные объекты. Использование стандартных алгоритмов, как и других средств стандартной библиотеки, избавляет программиста от написания, отладки и документирования циклов обработки последователностей, что уменьшает количество ошибок в программе снижает время её разработки и делает её более читаемой и компактной. Объявление стандартных алгоритмов находятся в заголовочном файле <algorithm>,стандартных функциональных объектов-в файле <functional>. Все алгоритмы можно разделить на 4 категории: немодифицирующие операции с последовательностями;модефицирующие операции с последовательностями; алгоритмы, связанные с сортировкой; алгоритмы работы с можествами и пирамидоми; Кроме того, библиотека содержит обобщённые численные алгоритмы, объявление которых находиться в файле <numeric>. Вкачестве параметров алгоритму передаються итераторы, определяющие начало и конец обрабатываетмой последовательности. Вид итераторов определяет типы контейнеров, для которых можит использоваться данный алгоритм. In – итератор для чтения, Out- итератор для записи, For- прямой итератор, Bi- двунаправленный итератор, Ran- итератор произвольного доступа, Comp-функция сравнения, Op-унарная операция, BinOp-бинарная операция.
36. Потоковые классы.
Библиотека потоковых классов С++ построена на основе двух базовых классов: ios и streambuf.
Класс streambuf обеспечивает организацию и взаимосвязь буферов ввода-вывода, размещаемых в памяти, с физическими устройствами ввода-вывода. Методы и данные класса streambuf программист явно обычно не использует. Этот класс нужен другим классам библиотеки ввода-вывода. Он доступен и программисту для создания новых классов на основе уже существующих.
Класс ios содержит средства для форматированного ввода-вывода и проверки ошибок.
Стандартные потоки (istream, ostream, iostream) служат для работы с терминалом. Строковые потоки (istrstream, ostrstream, strstream) служат для ввода-вывода из строковых буферов, размещенных в памяти. Файловые потоки (ifstream, ofstream, fstream) служат для работы с файлами:
ios -базовый потоковый класс; streambuf -буферизация потоков;istream -потоки ввода; ostream -потоки вывода;
Для ввода с потока используются объекты класса istream, для вывода в поток - объекты класса ostream.
В классе istream определены следующие функции:
-istream& get(char *buffer, int size, char delimiter = '\n'); Эта функция извлекает символы из istream и копирует их в буфер. Операция прекращается при достижении конца файла, либо когда скопированы size символов, либо при обнаружении указанного разделителя. Сам разделитель не копируется и остается в streambuf. Последовательность прочитанных символов всегда завершается нулевым символом.
-istream& read(char *buffer, int size); Не поддерживает разделителей, и считанные в буфер символы не завершаются нулевым символом.
-istream& getline(char *buffer, int size, char delimiter = '\n'); Разделитель извлекается из потока, но в буфер не заносится. Это основная функция для извлечения строк из потока. Считанные символы завершаются нулевым символом.