Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы все_001.doc
Скачиваний:
7
Добавлен:
25.09.2019
Размер:
238.59 Кб
Скачать

18. Статические методы и данные. Атрибут «static»

Статические члены-данные класса(static-данные) разделяются всеми объектами класса, т.е. для них всегда будет существовать только одна копия.

Можно также объявить статической функцию-член(метод) класса. К static-методу класса могут получить доступ только другие static-методы этого класса. Статическая функция-член не имеет указателя this.

Обращение к статическим членам класса выполняется через имя класса и оператор разрешения области видимости:: Например, my_class:: num=100;

19. Указатели на компоненты класса.

Указатели на нестатические компоненты класса определяются через имя объекта класса и “->”

Например, my_OBJ->n num=100; Обращение к статическим членам класса выполняется через имя класса и оператор разрешения области видимости:: Например, my_class:: snum=100;

20. Наследование. Базовый и производный классы.

Наследование – механизм создания производного класса из базового, т.е. к существующему классу можно что-либо добавить или изменять его каким-либо образом для создания нового (производного) класса. Это мощный механизм для повторного использования кода. Наследование позволяет создавать иерархию связанных типов, совместно использующих код и интерфейс.

21. Инициализация объектов при наследовании.

Последовательность инициализации объектов такая. Компилятор сначала вызывает конструкторы всех базовых классов (в том порядке, в котором классы присутствуют в списке наследования), а потом конструкторы для всех своих членов (в порядке объявления), а только затем выполняется тело конструктора.

22. Указатели на производный и базовый классы. Формат явного преобразования указателей на базовый класс.

Указатели на базовый и производные классы связаны такими отношениями, которые не свойственны указателям других типов. В С++ указатель на базовый класс также можно использовать для ссылки на объект любого класса, выведенного из базового. Но!, указатель на производный класс нельзя использовать для доступа к объектам базового класса.

Формат явного преобразования указателей на базовый класс следующий:

((D_class*)p) , где p - указатель на базовый класс,D_class - производный класс от базового класса, на который настроен указатель p.

23. Виртуальный базовый класс.

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

Производный класс, наследующий базовый класс как виртуальный, объявляется следующим образом:

class derived1:virtual public base{ }, где derived1 - производный класс от базового base

class derived2:virtual public base{ }, где derived1 - производный класс от базового base

class derived3: derived1,derived2 { }, где derived1 - производный класс от базового base

Класс derived3 содержит только одну копию базового класса base

24. Конструктор во множественном наследовании.

Конструктор базового класса выполняется ранее конструктора производного класса.

Конструкторы при множественном наследовании вызываются в порядке происхождения классов, а деструкторы – в обратном порядке.