Теоретический минимум знаний по языку программирования Си++
- Что такое: инкапсуляция, наследование, полиморфизм? Пояснить механизм реализации каждого из принципов объектно-ориентированного программирования в синтаксисе языка программирования Си++.
- Классы. Конструкторы, деструктор. (Определить класс, определить конструктор и деструктор в нем). Может ли в классе быть несколько деструкторов? Несколько конструкторов?
- Перегрузка операторов и функций. Особенности перегрузки и возврата значений в операторах «=» и «+». Перегрузка оператора «+=».
- Перегрузка операторов ввода и вывода, работающих с потоками Си++.
- Перегрузка оператора приведения типа.
- Оператор «::». Определение тела метода вне класса.
- Полиморфизм, виртуальные функции. Проиллюстрировать разницу в работе обычного и виртуального методов.
- Виртуальный деструктор. Зачем применяется?
- Динамическая память. Операторы new и delete. Выделить память под 100 вещественных чисел, потом ее освободить.
- Дружественные классы и функции (friend). Зачем применяются?
- Значения аргументов функций по умолчанию. Как задать? Всегда ли можно ли задать по умолчанию первый аргумент функции?
- Одиночное наследование. Проиллюстрировать работу унаследованного, переопределенного и нового методов в производном классе.
- Инкапсуляция. Права доступа к членам класса: private, protected, public. Проиллюстрировать разницу.
- Права доступа при наследовании класса: private, protected, public. Проиллюстрировать разницу.
- Множественное наследование.
- Чисто виртуальные функции. Что такое? Зачем применяются?
- Абстрактные классы.
- Передача и возврат параметров в функции по значению, по ссылке, по указателю.
- Потоки ввода–вывода Си++ cin и cout и их использование. Манипуляторы потоков endl, flush. Смена формата вывода целых и вещественных чисел.
- Потоки ввода–вывода Си++, определяемые в заголовочных файлах: <iostream>, <fstream>, <sstream>. Назначение, особенности использования.
- Файловый ввод–вывод в Си++. Открытие потока, связанного с файлом на чтение, запись. Закрытие потока.
- Ссылки. Чем отличаются от указателей? Нужно ли инициализировать ссылки при их объявлении? Работа оператора присваивания со ссылкой. Можно ли вернуть ссылку из функции на переменную, объявленную в этой функции?
- Статические методы и поля класса.
- Указатели. Операторы взятия адреса и взятия значения по адресу.
- Пространства имен (namespace, using). Пространство имен std.
- Обобщенное программирование. Шаблоны функций.
- Обобщенное программирование. Шаблоны классов.
- Строковые классы Си++ (string) и их использование. Инициализация значения, определение длины строки, поиск символа, поиск подстроки. Присваивание строк.
- Библиотека стандартных шаблонов (STL): контейнер vector. Инициализация, определение размера, считывание значения элемента, изменение значения элемента.
- Библиотека стандартных шаблонов (STL): контейнер list. Инициализация, определение размера, считывание значения элемента, изменение значения элемента.
- Библиотека стандартных шаблонов (STL): контейнер set. Инициализация, определение размера, считывание значения элемента, изменение значения элемента.
- Библиотека стандартных шаблонов (STL): контейнер map. Инициализация, определение размера, считывание значения элемента, изменение значения элемента.
- Библиотека стандартных шаблонов (STL): поиск элемента в контейнере и сортировка элементов контейнера.
- Explicit-конструкторы. В каких ситуациях применяются?
- Обработка исключений Си++. Ключевые слова try, throw, catch, и их использование.
