Теоретический минимум знаний по языку программирования Си++

  1. Что такое: инкапсуляция, наследование, полиморфизм? Пояснить механизм реализации каждого из принципов объектно-ориентированного программирования в синтаксисе языка программирования Си++.
  2. Классы. Конструкторы, деструктор. (Определить класс, определить конструктор и деструктор в нем). Может ли в классе быть несколько деструкторов? Несколько конструкторов?
  3. Перегрузка операторов и функций. Особенности перегрузки и возврата значений в операторах «=» и «+». Перегрузка оператора «+=».
  4. Перегрузка операторов ввода и вывода, работающих с потоками Си++.
  5. Перегрузка оператора приведения типа.
  6. Оператор «::». Определение тела метода вне класса.
  7. Полиморфизм, виртуальные функции. Проиллюстрировать разницу в работе обычного и виртуального методов. 
  8. Виртуальный деструктор. Зачем применяется?
  9. Динамическая память. Операторы new и delete. Выделить память под 100 вещественных чисел, потом ее освободить. 
  10. Дружественные классы и функции (friend). Зачем применяются?
  11. Значения аргументов функций по умолчанию. Как задать? Всегда ли можно ли задать по умолчанию первый аргумент функции?
  12. Одиночное наследование. Проиллюстрировать работу унаследованного, переопределенного и нового методов в производном классе.
  13. Инкапсуляция. Права доступа к членам класса: private, protected, public. Проиллюстрировать разницу.
  14. Права доступа при наследовании класса: private, protected, public. Проиллюстрировать разницу.
  15. Множественное наследование.
  16. Чисто виртуальные функции. Что такое? Зачем применяются?
  17. Абстрактные классы.
  18. Передача и возврат параметров в функции по значению, по ссылке, по указателю.
  19. Потоки ввода–вывода Си++ cin и cout и их использование. Манипуляторы потоков endl, flush. Смена формата вывода целых и вещественных чисел.
  20. Потоки ввода–вывода Си++, определяемые в заголовочных файлах: <iostream>, <fstream>, <sstream>. Назначение, особенности использования.
  21. Файловый ввод–вывод в Си++. Открытие потока, связанного с файлом на чтение, запись. Закрытие потока.
  22. Ссылки. Чем отличаются от указателей? Нужно ли инициализировать ссылки при их объявлении? Работа оператора присваивания со ссылкой. Можно ли вернуть ссылку из функции на переменную, объявленную в этой функции? 
  23. Статические методы и поля класса.
  24. Указатели. Операторы взятия адреса и взятия значения по адресу.
  25. Пространства имен (namespace, using). Пространство имен std.
  26. Обобщенное программирование. Шаблоны функций.
  27. Обобщенное программирование. Шаблоны классов.
  28. Строковые классы Си++ (string) и их использование. Инициализация значения, определение длины строки, поиск символа, поиск подстроки. Присваивание строк.
  29. Библиотека стандартных шаблонов (STL): контейнер vector. Инициализация, определение размера, считывание значения элемента, изменение значения элемента.
  30. Библиотека стандартных шаблонов (STL): контейнер list. Инициализация, определение размера, считывание значения элемента, изменение значения элемента.
  31. Библиотека стандартных шаблонов (STL): контейнер set. Инициализация, определение размера, считывание значения элемента, изменение значения элемента.
  32. Библиотека стандартных шаблонов (STL): контейнер map. Инициализация, определение размера, считывание значения элемента, изменение значения элемента.
  33. Библиотека стандартных шаблонов (STL): поиск элемента в контейнере и сортировка элементов контейнера.
  34. Explicit-конструкторы. В каких ситуациях применяются?
  35. Обработка исключений Си++. Ключевые слова try, throw, catch, и их использование.