1. Понятие класса. Поля и методы класса. Элементы класса.
Спецификаторы доступа к элементам класса. Глобальные и локальные классы. Пример класса с полями и методами. Встроенные методы. Понятие конструктора класса. 2. Понятие объекта (экземпляра) класса. Различные способы инициализации объекта класса. Доступ к элементам объекта. Константный объект. Константные методы. 3. Указатель this. Пример использования указателя this. Использование указателя this для идентификации поля класса. 4. Конструктор класса и его особенности. Конструктор по умолчанию. Примеры использования конструкторов различных видов. Правила написания перегруженных конструкторов для корректной работы компилятора. Использование списка инициализаторов для инициализации полей в конструкторе. 5. Конструктор копирования и его особенности. Пример использования конструктора копирования. Конструктор преобразования. 6. Статические элементы класса. Статические поля класса и их особенности. Пример использования статического поля класса. Статические методы и их особенности. Пример статического метода класса. 7. Понятие дружественных функций и классов. Дружественная функция и ее особенности. Описание в качестве дружественных функций метода класса и функции общего вида. Примеры дружественных функций. 8. Дружественный класс и его особенности. Пример дружественного класса. Деструктор класса и его особенности. 9. Перегрузка операций и правила ее осуществления. 10. Перегрузка унарной операции ++. Определение унарной операции внутри класса и вне класса (правила и примеры). Особенности определения префиксного и постфиксного инкрементов. 11. Рекомендации по составу класса. 12. Наследование и его смысл в объектно-ориентированном программировании. Использование ключей доступа при наследовании. 13. Простое наследование и его особенности. Пример простого наследования. 14. Правила наследования различных методов и операций. Порядок вызова конструкторов и деструкторов при наследовании. 15. Виртуальные методы и смысл их использования. Механизм раннего связывания. Пример раннего связывания и механизм его обхода. Определение виртуального метода. Правила описания и использования виртуальных методов. Чисто виртуальный метод. 16. Механизм позднего связывания и его реализация компилятором. Роль vtbl и vptr. Рекомендации по использованию виртуальных методов. Ситуации, в которых использование виртуальных методов нецелесообразно. Понятие полиморфного объекта.