- •1. Основные типы данных, объявление пользовательских типов данных typedef
- •Int (целочисленный тип)
- •2. Основные директивы препроцессора. Макросы
- •3. Указатели и динамическая память
- •4. Понятие функций. Механизм вызова функций и передача параметров
- •5. Передача и возврат параметров по значению и по указателю
- •6. Ссылки и ссылочные параметры
- •7. Перегрузка функций
- •8. Использование спецификатора const с указателями.
- •9. Понятие идентификатора. Пространства имен. Ключевое слово namespace
- •10. Анонимные пространства имен. Ключевое слово using.
- •11. Понятие структур. Оператор доступа к полям структуры по указателю.
- •12 . Понятие класса и объекта.
- •13. Время жизни переменных и объектов.
- •14. Область действия класса. Управление доступом к членам класса. Отделение интерфейса от реализации
- •15 . Понятие конструктора. Использование конструктора с аргументами по умолчанию. Конструктор по умолчанию.
- •16. Понятие деструктора. Когда вызываются конструкторы и деструкторы.
- •17. Константные объекты и функции-члены.
- •18. Дружественные функции и дружественные классы.
- •19. Использование указателя this.
- •20. Использование операции new и delete.
- •21. Статические члены класса.
- •25.Функции-операции как члены класса и как дружественные функции.
- •26.Перегрузка операции присваивания. Условия вызова оператора присваивания и конструктора копирования.
- •27. Понятие наследования. Механизм ограничения доступа при наследовании.
- •28.Приведение типа указателя базового класса к указателю производного класса и наоборот.
- •29.Переопределение членов базового класса в производном классе.
- •30. Конструкторы и деструкторы в производных классах
- •32. Неявный вызов конструкторов объектов
- •33. Понятие виртуальной функции
- •34. Понятие полиморфизма (примеры)
- •35. Абстрактные и конкретные базовые классы
- •36. Статическое и динамическое связывание
- •37. Виртуальные деструкторы
- •38. Шаблоны. Шаблонная функция
- •39. Шаблоны классов. Применение. Параметры шаблона типа typename
- •40. Шаблоны классов и наследование.
- •41. Шаблоны. Инстанцирование шаблонов и спецификация шаблонов
- •42. Понятие исключения. Когда должна использоваться обработка исключений.
- •43. Генерация исключений. Повторная генерация исключений
- •44. Перехватывание исключений
- •45. Спецификация исключений. Обработка неожидаемых исключений.
- •46. «Раскручивание» стека. Иерархия исключений стандартной библиотеки
- •47. Конструкторы, деструкторы и обработка исключений. Исключения и наследование.
- •48. Обработка неуспешного выполнения new
- •49. Стандартная библиотека шаблонов (stl). Основные типы контейнеров
- •50. Стандартная библиотека шаблонов (stl). Алгоритмы, методы, итераторы
- •51. Последовательные контейнеры: vector, list, deque. Основные методы и алгоритмы
- •52. Ассоциативные контейнеры: set, multiset, map, multimap. Основные методы и алгоритмы.
- •53. Операторы приведения типов static_cast, reinterpret_cast
- •54. Информация о типе времени выполнения (rtti). Использование функции typeid(). Оператор dynamic cast
- •55. Ключевое слово ехрlicit.Ключевое слово mutable
- •56. Классы-контейнеры и классы-итераторы
- •57. Понятие ооп. Парадигмы ооп (инкапсуляция, наследование, полиморфизм)
- •58. Основные составляющие объектного подхода: абстрагирование, инкапсуляция, модульность
- •59. Природа объекта. Состояние, поведение, идентичность объекта
- •60. Отношения между объектами. Связи. Агрегация
13. Время жизни переменных и объектов.
Локальные переменные, т. е. объявленные внутри блока, а также переменные с классом памяти register или auto, имеют время жизни только на период выполнения того блока, в котором они объявлены. Если переменная объявлена внутри блока с классом памяти static или extern, то она имеет время жизни на период выполнения всей программы;Переменная, объявленная глобально, т. е. вне всех блоков, существует на протяжении всего времени выполнения программы;
14. Область действия класса. Управление доступом к членам класса. Отделение интерфейса от реализации
Отделение интерфейса от реализации облегчает модификацию программ. Изменения в реализации класса не влияют на клиента до тех пор, пока интерфейс класса, изначально предназначенный для клиента, остается неизменным. Каждое определение класса обычно помещается в заголовочный файл, а определения функций-элементов этого класса поме¬щаются в файлы исходных кодов с теми же базовыми именами. Заголовочные файлы включаются (посредством #include) в каждый файл, в к-ом ис¬пользуется класс. Управление доступом к Эл-там Спецификаторы доступа к элементу public (открытая часть класса (интерфейс).
В интерфейсе описываются операции, которые класс предоставляет своим клиентам.) и private protected ( защищенные, закрытая часть класса наз-ся реализацией класса. В ней обычно описываются данные класса.)Закрытые элементы класса могут быть доступны только для ф-ций-эл-тов (и дружественных функций) этого класса.Открытые элементы класса могут быть доступны для любых ф-ций в программе.Основная задача открытых эл-тов: дать клиентам класса представление о возможностях (услугах), которые обеспечивает класс. Этот набор услуг составляет открытый интерфейс класса. Клиентов класса не должно касаться, каким образом класс выполняет их задачи. Клиент класса может быть ф-цией-эл-том другого класса или гло¬бальной функцией. Из того, что данные класса закрытые, не следует, что клиенты не могут изменять эти данные. Данные могут быть изменены ф-циями-эл-тами или друзьями этого класса. Эти ф-ции должны быть спроектированы так, чтобы гарантировать целостность данных. Доступ к закрытым данным класса должен тщательно контролироваться использованием функций-элементов, называемых функциями доступа.
class Time { public:
Time();
void setTime(int,int,int);
void printMilitary();
void printStandart();
private:
int hour; int minute; int second; };
15 . Понятие конструктора. Использование конструктора с аргументами по умолчанию. Конструктор по умолчанию.
После создания объекта его эл-ты могут быть инициализированы с помощью ф-ции конструктор. Конструктор — это функция-элемент класса с тем же именем, что и класс.
Функция-конструктор – инициализирует объект во время его создания.
Конструктор вызывается автоматически во время создания (объявления) объекта. При инициализации глобальн. или static объектов конструктор вызывается. 1 раз; для локальных объектов – всякий раз, когда встречаеться объявление объекта.
Если для класса были описаны конструкторы, то невозможно описать переменную этого класса так, чтобы конструктор не был вызван. Данные-элементы класса не могут получать начальные значения в определении класса. Они либо должны получить эти значения в конструкторе класса, либо их значения можно установить позже, после создания объекта. Конструкторы не могут указывать типы возвращаемых значений или возвращать какие-то значения. Конструкторы можно перегружать, чтобы обеспечить множество начальных значений объектов класса. Использование конструкторов с аргументами по умолчанию Конструктор может содержать значения аргументов по умолчанию. Задание в конструкторе аргументов по умолчанию позволяет гарантировать, что объект будет нахо¬диться в непротиворечивом состоянии, даже если в вызове конструктора не указаны никакие значения.
Конструктор, у которого все аргументы — аргументы по умолчанию (или который не требует никаких аргументов), называется конструктором с умолчанием, т.е. конструктором, который можно вызывать без указания каких-либо аргументов.
Применение аргумента по умолчанию является скрытой формой перегрузки функций.
Например:
void f(int a=0, int b=0);
Теперь эту функцию можно вызывать тремя способами: с двумя заданными аргументами, с первым заданным аргументом(b по умолчанию =0), без аргументов.
Пример:
f(); \\ a=0 b=0
f(10); \\ a=10 b=0
f(10, 99); a=10 b=99
Невозможно передать по умолчанию значение а и при этом задать b. Аргументы по умолчанию нельзя задавать одновременно в определении и в прототипе ф-ции. Аргументы по умолчанию должны быть константными или глобальными переменными. Они не могут быть локальными переменными или другими параметрами.