|
Программирование >> Программирование на языке c++
void fb2() { cout \nfb2 ; ) class D : public B2, public Bl { int d; public: D(int dd.int bbl.int bb2) : d(dd),B1(bb1),B2(bb2) { cout D\t ; } ~D{) { cout -D\t ; } void fd() { cout \nfd ; } void main(void) 82 Bl D
Последовательность вызова деструкторов: -D -Bl -B2 -В В заключение перечислим основные выводы и правила: > класс может быть производным от любого числа базовых классов. Использование более чем одного непосредственного базового класса называется множественным наследованием; > последовательность записи базовых классов при объявлении производного класса влияет только на последовательность вызова соответствующих конструкторов и деструкторов; > класс нельзя объявить непосредственным базовым классом более одного раза; > класс можно объявить более одного раза базовым классом косвенно через промежуточные производные классы (см. пример 1 и рис. 4.4,а); > для того чтобы производный класс имел только один подобъект объявленного косвенным образом базового класса, можно специфицировать этот базовый класс виртуальным (см. рис. 4.4,(2,6 и пример 2); > в одно и то же время класс может иметь виртуальный и невиртуальный базовые классы одного типа (они наследуются через промежуточные классы). 4.6. Управление доступом к компонентам класса Компоненты-данные и компоненты-функции класса могут иметь следующие атрибуты: > private (локальный или недоступный извне); > protected (защищенный или с ограниченным доступом); public (глобальный или доступный). Компонент с атрибутом private может быть использован только компонентами-функциями того же класса и функциями, которые объявлены в этом же классе со спецификатором friend. К компоненту с атрибутом protected класса Б можно получить тот же доступ, что и к компоненту с атрибутом private. Дополнительно он может быть использован компонентами-функциями и функциями со спецификатором friend любых производных классов, наследуемых из класса Б. Компонент с атрибутом public может быть использован любой функцией. Рис. 4.5 суммирует все правила доступа к компонентам класса Б с различными атрибутами. Все функции языка С++ можно разделить на три группы: > компоненты класса и friend функции класса (они имеют доступ к локальным - private компонентам этого же класса); компоненты производного класса и friend функции производного класса (они дополнительно имеют доступ к > защищенным - protected компонентам их базового класса); > другие функции (они имеют доступ только к глобальным - public компонентам классов). БАЗОВЫЙ КЛАСС Б public: компонент риЬис; protected: KOMnoHeHT protected; private: KOMnoHeHT private; КОМПОНЕНТ ФУНКЦИЯ РК1ЕКВ ФУНКЦИЯ ПРОИЗВОДНЫЙ КЛАСС КОМПОНЕНТ ФУНКЦИЯ РЯ1ЕМО ФУНКЦИЯ - ГЛОБАЛЬНАЯ ФУНКЦИЯ. Рис. 4.5. Доступ к компонентам класса Б с различньпк1и атрибутами (public, protected, private)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |