Программирование >>  Программирование на языке c++ 

1 ... 51 52 53 [ 54 ] 55 56 57 ... 159


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 od(1,2,3),*pd;

pd=&od;

pd->fb1{);

od.fblO;

pcl->fb2{);

od.fb2();

pd->fd();

od.fdO;

Pd->fb{);

od.fbO;

cout << endl;

Последовательность вызова деструкторов: -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)



1 ... 51 52 53 [ 54 ] 55 56 57 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика