Указатели на функцию. Определение указателей на функции с инициализацией. Присваивание значений указателю на функции. Вызов функции с помощью указателя на функцию. Указатель на функцию – параметр функции. Фактические параметры для формального параметра –указателя на функции. Определение типа указателя на функции.
Массив указателей на функции. Использование массива указателей на функции при разработке программы, управление которой, осуществляется с помощью меню. Указатель на функцию - результат работы функции.
Ссылка на функцию. Вызов функции с помощью ссылки на функцию. Ссылка - возвращаемый результат функции.
Рекурсивные функции. В качестве примера, определить рекурсивную функцию вычисления математической функции F(N) = 1*3*5*7*…*(2*N+1) , функция определена при N>0. Подставляемые функции.
Перегрузка функций. Шаблоны функций. Привести примеры перегрузки функций и шаблона функций.
Структура как тип и совокупность данных. Инициализация. Внутреннее представление. Указатели и ссылки на структуру. Обращение к элементам структуры.
Структуры и функций. Возвращаемые функциями значения и параметры функций структурного типа.
Вложенные структуры. Массивы структур. Указатели на структуры. Выделение динамической памяти.
Объединения. Назначение объединений. Определение типа и переменных – объединений. Инициализация. Объединения и битовые поля. Внутреннее представление объединений. Динамическое выделение памяти.
Связанные линейные динамические структуры. Стек.
Очередь. Базовые функции и алгоритмы.
Список. Базовые функции и алгоритмы.
Препроцессорная обработка программы. Директивы препроцессора. Директива #define. Макроподстановки средствами препроцессора. Макросы и шаблоны функций.
Директивы препроцессора условной компиляции. Директивы #include, #line, #error, # , #pragma, а также операции # и ##.
Объектно-ориентированный подход к программированию. Понятие класса как структурированного типа. Определение класса ( два способа описания методов класса). Создание объектов (экземпляров класса) по имени и с помощью указателя и динамического выделения памяти. Инициализация. Обращение к компонентным данным и функциям.
Статический компонент класса. Инициализация, обращение к статическому элементу Статическая компонентная функция, назначение, вызов.
Доступ к членам класса. Спецификаторы доступа. Друзья классов: дружественные функции и дружественные классы.
Конструкторы и деструкторы. Назначение, формат определения, свойства. Создание объекта с помощью вызова конструктора с параметрами по имени и с помощью указателя.
Конструктор с параметрами. Конструктор с аргументами, задаваемыми по умолчанию. Конструктор по умолчанию.
Конструктор копирования. Назначение. Копирование по умолчанию. Определение конструктора копирования при наличии в классе указателя на динамический участок памяти.
Компонентные данные и компонентные функции. Статические компоненты класса. Внешнее и внутреннее определение компонентных функций.
Указатель this . Применение в связанных списках объектов класса.
Перегрузка функций. Перегрузка конструкторов.
Перегрузка стандартных операций. Два варианта перегрузки: операция функция является компонентной функцией класса, и операция функция является дружественной функцией класса.
Перегрузка арифметических операций ( +, -, * ) и операции включения в поток << для пользовательского класса комплексного числа.
Перегрузка арифметической операции ‘+ ’ и операции включения в поток << для пользовательского класса “строка”.
Перегрузка операций инкремента и декремента на примере класса , который имеет данные ( два) числовых типов.
Перегрузка операции присваивания. Перегрузка присваивания при наличии в классе указателя на динамический участок памяти. Различие между копированием и присваиванием. Блокировка копирования и присваивания. //29. Преобразование типов в классах пользователя.
Наследование. Суть метода. Определение производного класса. Влияния формата определения производного классов и спецификаторов доступа на доступ наследуемых элементов.
Наследование. Передача параметров конструктора в базовый класс. Конструкторы с инициализацией по умолчанию в иерархии классов.
Множественное наследование. Прямое и косвенное наследование. Иерархия производных классов в виде графа (НАГ). Порядок вызовов конструкторов и деструкторов базовых классов при множественном наследовании.
Множественное наследование на примере графического класса “окружность, вписанная в квадрат”, производного от базовых классов” окружность” и “квадрат”.
Дублирование объектов базового класса, косвенно наследуемого при множественном наследовании. Виртуальные базовые классы. Примеры иерархии классов (НАГ), с участием виртуальных базовых классов.
Полиморфизма. Понятие виртуальной функции. Режимы раннего и позднего (динамического) связывания. Полиморфные классы.
Преобразование типов указателей в иерархии классов. Работа с виртуальными функциями. Пустая и чистая виртуальные функции.
Абстрактный класс. Работа с абстрактным классом на примере построение производных классов конкретных фигур ( “окружность”, “эллипс”, “квадрат”) на базе абстрактного класса “фигура”. //38. Работа с виртуальными функциями на примере построения и использования производных классов от класса кнопка- кнопки с номером клавиши, в которых замещена чистая виртуальная функция базового класса - функция отклика на нажатие клавиши.
Классы и шаблоны.
Библиотека классов ввода – вывода. Понятия потока. Иерархия потоковых классов.
Стандартные потоки ввода – вывода (объекты потоковых классов). Операции вставки в поток и извлечения из потока. Особенности операций вставки и извлечения.
Форматирование данных при обмене с потоком. Флаги, компонентные функции для форматирования и манипуляторы.
Перегрузка операций >> и << для типов пользователя ( на примере перегрузки операций ввода- вывода данных некоторого структурного типа и для ввода-вывода объектов некоторого пользовательского класса ) .
Компонентные функции неформатного ввода – вывода (put( ) , write ( ) , get ( ), getline ( ), read( ))
Компонентные функции анализа и коррекции очередного символа потока peek() , putback(), ignore() и функции анализа и установки позиции ввода вывода.
Строковые потоки ( обмены в оперативной памяти). Объявление входных и выходных строковых потоков.
строк при использованием входных строковых потоков. Конкатенация строк в выходных строковых потоках. Двунаправленные строковые потоки. Безымянные строковые потоки.
Средства языка С++ для работы с файлами и логическими устройствами. Ввод-вывод нижнего уровня. Создание файла. Текстовой и бинарный режим обмена с файлом. Открытие и закрытие файла.
Функции работы с файлами на нижнем уровне(чтение и запись в файл, функции анализа и установки позиции в файле и др.).
Библиотека файловых потоковых классов. Определение файловых потоков - объектов классов, используя, конструктор по умолчанию. Использование компонентной функции open() для связи физического файла с потоком.
Проверка удачности завершения функции open( ) ( перегруженная операция ! , примененная к потоку). Компонентная функция eof(). Закрытие файлов.
Определение потока и присоединение к нему физического файла с помощью конструктора класса с параметрами.
Создание файла на нижнем уровне и подсоединение файла к потоку, используя дескриптор файла.
Перегрузка операций ввода-вывода данных произвольного структурного типа в файловый поток при текстовом и бинарном обмене с файлом.
Стандартная библиотека ввода-вывода верхнего уровня языка Си. Доступ к файлам: открытие и закрытие файлов.
Функции бесформатного ввода-вывода в текстовые файлы: посимвольного и построчного.
Функции форматного ввода-вывода в текстовой файл.
Функции ввода-вывода записями. Функции положения и управление положением указателя файла.
|