Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_лекции.docx
Скачиваний:
1
Добавлен:
16.11.2019
Размер:
27.2 Кб
Скачать

Статические компоненты

При описании класса объявляются со словом static. Статические компоненты следует рассматривать как компоненты класса в целом. Они существуют всегда в единственном экземпляре, независимо от количества объектов данного класса. Обращаться к статическому компоненту можно как через объект так и через класс:

Имя_объекта.имя_статического_компонета

Имя_объекта.имя_класса::имя_статического_компонента (встречается редко)

Имя_класса::имя_статического_компонента

Доступ к статическому компоненту возможен только после его инициализации с помощью его синтаксической конструкции:

Тип имя_класса::имя_компонента инициализатор;

Статический компонент, если он является компонентным данным, можно рассматривать как глобальную переменную, предназначенную для работы со всеми объектами этого класса. Доступ к статическому компоненту возможен, даже если не один объект этого класса не создан.

Деструктор

Если объекты создаются динамически, то по мере выполнения программы может возникать ситуация когда объекты становятся «ненужными», т.е. Необходимо производить их удаление и очищать память которую они занимали. Выполнение этих операций обеспечивает специальная компонентная функция – деструктор. Деструктор всегда есть в любом классе, если он не определен программистом, то компилятор генерирует его автоматически, поэтому заголовок деструктора имеет следующий вид:

~ имя_класса()

{опреторы_тела_деструктора;}

Деструктор вызывается автоматически при уничтожении объекта. Деструктор должен быть определен явно, если объект содержит динамически размещаемые компоненты.

Указатель this

При определении компонентных функций класса для компонентов этого класса не требуется использование квалифицированного имени, в силу того что «класс знает все свои компоненты». Кроме того, если создается несколько объектов одного и того же класса, компонентные функции будут работать с данными того объекта, для которого они вызываются. Достигается это за счет того что в компонентную функцию автоматически и неявно всегда передается указатель на тот объект для которого вызывается функция.

Определяется указатель следующим образом:

Имя_класса *const this=адрес_объекта; //обратиться можем, а определять не надо

Наследование

Наследование это такое отношение между классами когда один класс полностью или частично заимствует структурную и функциональную часть одного или нескольких других классов. В первом случае наследование одиночное, во втором множественное. При одиночном наследовании иерархия имеет вид дерева ( у каждого производного класса только один предок, но у каждого класса возможно несколько потомков), при множественном наследовании вид графа. Класс от которого происходит заимствование называется предком, базовым классом, либо родительским классом. Класс который в заимствует называется потомком, производным классом, дочерним классом.

Потомок является частным случаем своего предка, т.е. он его уточняет. Выстраивать иерархию целесообразно по следующему правилу, если Б есть А, то его можно наследовать от А. Отношения иерархий наследования можно определить как «обобщения специализация, общее частное»

Класс который находиться в вершине иерархии содержит общие для всех производных классов свойства и поведения, а каждый производный класс может уточнять своего предка добавлением новых свойств, новых поведений или переопределением поведений своего предка.