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

class TBase { class TDerived: public TBase {

private: private:

Int count;

public: int secondCount

TBase() {count = 0;} public

void SetCount (int n)

{count = n;} TDerived()

int GetCount(void)

{return count;}

}; void ChangCount(int n)

{SetCount(GetCount() + n); }

};

Рис. 3.5. взаимосвязь классов

TBase и TDerived

Защищенные члены класса

Защищенный член классанечто среднее между закрытым и открытым членом. (protected)

Подобно закрытым членам, защищенные доступны только функциям-членам класса. Вне класса защищенные члены невидимы. Подобно открытым членам, защищенные наследуются производными классами и доступны функциям-членам производных классов.

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

Унаследованные члены

Унаследованные члены

Производный класс

Закрытые члены

Защищенные члены

Открытые члены

Базовый класс

Унаследованные члены

Рис. 3.6. закрытые защищенные и

открытые члены в базовом

и производном классе

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

  • Закрытые члены доступны только в классе, в котором они объявлены

  • Защищенные члены доступны членам их собственного класса и всем членам производных классов.

  • Открытые члены доступны членам их собственного класса, членам производных классов и всем остальным пользователям этого класса.

Замечание

В главе 15 объясняется, как друзья класса могут обойти эти правила.

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

ПРИМЕР базового класса

class TAnyClass {

private:

int A;

// доступен только членам TAnyClass

// т.е.fa(), fb() и fc()

Void fa(void);

// “ ”

//внешние оп-ры не могут вызывать fa()

//защищенные

protected:

int B;

// Доступен TAnyClass и

// членам производных классов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]