1: Введение в классы
2: Где объявление, а где определение?
3: Чем равно значение переменной x?
4: Зачем нужны следующие директивы препроцессора?
5: Что будет выведено на экран?
6: Что будет выведено на экран?
7: Порядок вычисления аргументов функции Стандарт С не определяет, в каком порядке будут вычислены фактические параметры функции
8: Второй допустимый вариант объявления функции main argc – количество аргументов, переданных в программу через CLI. argv – сами аргументы в формате строки, причем первый из них – имя запускаемой программы
9: Пример
10: Объявление класса Класс можно объявлять в глобальной области видимости, либо внутри другого класса
11: Терминология Поля – переменные класса Методы – функции-члены класса Интерфейс – набор всех публичных методов Состояние – набор всех полей класса Экземпляр – объект класса
12: Модификаторы доступа
13: Модификатор доступа по умолчанию
14: Создание экземпляров (объектов) класса
15: Неявные параметры методов класса Во все методы класса при вызове неявно передаются поля класса
16: Доступ к полям и членам Если объект был создан статически, то доступ к его полям и методам осуществляется с помощью оператора «. » Если объект был создан в динамической памяти, то доступ осуществляется либо с помощью разыменования и операции «. », либо с помощью оператора «-».
17: Пример
18: Определение методов вне класса
19: Пример класса – Stack stack. h
20: Пример класса – Stack stack. h продолжение
21: Пример класса – Stack stack. cpp
22: Пример класса – Stack stack. cpp продолжение
23: Пример класса – Stack main. cpp
24: Найдите ошибки в коде
25: Предварительное объявление
26: Конструкторы Конструктор – функция без типа, имя которой совпадает с именем класса, вызывается неявно при создании объекта класса. Класс может иметь несколько перегруженных конструкторов.
27: Деструкторы Деструктор – функция без типа, предваренная символом «», которая совпадает с именем класса, вызывается неявно при разрушении объекта. Как правило разрушение происходит либо при вызове delete, либо при выходе объекта из области видимости.
28: Синтаксис вызова конструктора
29: Альтернативный синтаксис инициализации Конструкторы с одним параметром позволяют применять альтернативный синтаксис инициализации
30: Конструктор по умолчанию Если для класса / структуры вы не определили ни одного конструктора, то компилятор сам добавит его, такой конструктор будет эквивалентен конструктору без параметров с пустым телом.
31: Пример
32: Пример продолжение
33: Список инициализации Список инициализации используется для задания начальных значений полям без предварительного вызова конструкторов по умолчанию для полей, являющихся объектами классов. Синтаксис:
34: Пример без использования списка инициализации
35: Пример без использования списка инициализации продолжение
36: Пример без использования списка инициализации продолжение
37: Пример без использования списка инициализации продолжение
38: Пример с использованием списка инициализации
39: Пример с использованием списка инициализации продолжение
40: Выбор нужного имени в списке инициализации компилятором Компилятор из контекста сможет понять, что внешнее field – это поле класса, а внутреннее – формальный параметр конструктора