ВУЗ:
Составители:
Рубрика:
105
void main(){
Base b;
cout<<b.protectedm; //Ошибка!
Derived d;
cout<<d.protectedm; //Ошибка.
}
19.3. Управление уровнем доступа к членам класса
В предыдущих примерах базовый класс являлся общим базовым
классом для производного класса:
class Derived: public Base{…};
Это означает, что уровень доступа к членам класса Base для функ-
ций-членов класса Derived и просто пользователей класса Derived ос-
тался неизменным: личные члены класса Base не доступны в классе
Derived, общие и защищенные члены класса Base остались соответст-
венно общими и защищенными в Derived. Если не указать, что базовый
класс является общим, то по умолчанию он будет личным:
class Derived: Base{…}; // Base – личный базовый класс.
Если базовый класс является личным базовым классом, то его
личные члены по-прежнему недоступны ни в производном классе, ни
для пользователя производного класса, а защищенные и общие члены
базового класса становятся личными членами производного класса.
Базовый класс не может быть защищенным базовым классом.
Если базовый класс является личным, то для некоторых его чле-
нов в производном классе можно восстановить уровень доступа базово-
го класса. Для этого их полное имя приводится в соответствующей час-
ти определения класса:
class Base {
private: int privm;
protected: int protm;
public: int pubm;
};
class Derived: Base{// Личный базовый класс.
public:
Base::pubm; // Теперь pubm – общий член класса Derived;
Base::protm; // ошибка – изменение уровня доступа.
protected:
Страницы
- « первая
- ‹ предыдущая
- …
- 101
- 102
- 103
- 104
- 105
- …
- следующая ›
- последняя »
