Составители:
Рубрика:
class A { ... };
class В { ... };
class С { ... };
class D: A, protected В, public С
{...};
При этом D наследует все элементы базовых классов. По умолчанию наследуют-
ся только элементы базовых классов, имеющие тип public и protected. Для изменения
этого умолчания при описании базовых классов могут указываться спецификаторы
доступа public или private. Эти спецификаторы не меняют спецификаций доступа для
элементов базовых классов, а только определяют доступ к этим элементам из порож-
даемых классов. При описании классов для базовых элементов по умолчанию берется
спецификатор private, для структур - public. Объединения не участвуют в иерархии
классов. В общем случае, для определения возможности доступа к элементу руково-
дствуются таблицей 3.1.
Таблица 3.1
Доступ в базовом классе Ключ доступа Доступ в порожденном классе
public public public
private public не доступен
protected public protected
public private private
private private не доступен
protected private private
public protected protected
private protected private
protected protected protected
Как видно из таблицы, private элементы базового класса в производном классе не-
доступны вне зависимости от ключа. Обращение к ним может осуществляться только
через методы базового класса.
Элементы protected при наследовании с ключом private становятся в производном
классе private, в остальных случаях права доступа к ним не изменяются. Доступ к эле-
ментам publiс при наследовании становится соответствующим ключу доступа.
Данные, приведенные в таблице, иллюстрируются следующими примерами:
class X: А {...}// класс Х порождается из класса А доступ - private
class Y: В, public С {...} // класс Y порождается (множественное наследование)
//из В и С. В - private, С - public
struct S: D {...} // структура S порождается из D доступ - public
Определение доступа к наследуемым элементам может быть проведено и явно, пу-
тем указания наследуемых элементов в описаниях порождаемого класса. Например:
class В
{
int a; // private по умолчанию
public: int b,c;
int Bfunc (void);
};
class X: private В // b,c, Bfunc - private для Х
{
int d; // private по умолчанию
93
class A { ... };
class В { ... };
class С { ... };
class D: A, protected В, public С
{...};
При этом D наследует все элементы базовых классов. По умолчанию наследуют-
ся только элементы базовых классов, имеющие тип public и protected. Для изменения
этого умолчания при описании базовых классов могут указываться спецификаторы
доступа public или private. Эти спецификаторы не меняют спецификаций доступа для
элементов базовых классов, а только определяют доступ к этим элементам из порож-
даемых классов. При описании классов для базовых элементов по умолчанию берется
спецификатор private, для структур - public. Объединения не участвуют в иерархии
классов. В общем случае, для определения возможности доступа к элементу руково-
дствуются таблицей 3.1.
Таблица 3.1
Доступ в базовом классе Ключ доступа Доступ в порожденном классе
public public public
private public не доступен
protected public protected
public private private
private private не доступен
protected private private
public protected protected
private protected private
protected protected protected
Как видно из таблицы, private элементы базового класса в производном классе не-
доступны вне зависимости от ключа. Обращение к ним может осуществляться только
через методы базового класса.
Элементы protected при наследовании с ключом private становятся в производном
классе private, в остальных случаях права доступа к ним не изменяются. Доступ к эле-
ментам publiс при наследовании становится соответствующим ключу доступа.
Данные, приведенные в таблице, иллюстрируются следующими примерами:
class X: А {...}// класс Х порождается из класса А доступ - private
class Y: В, public С {...} // класс Y порождается (множественное наследование)
//из В и С. В - private, С - public
struct S: D {...} // структура S порождается из D доступ - public
Определение доступа к наследуемым элементам может быть проведено и явно, пу-
тем указания наследуемых элементов в описаниях порождаемого класса. Например:
class В
{
int a; // private по умолчанию
public: int b,c;
int Bfunc (void);
};
class X: private В // b,c, Bfunc - private для Х
{
int d; // private по умолчанию
93
Страницы
- « первая
- ‹ предыдущая
- …
- 91
- 92
- 93
- 94
- 95
- …
- следующая ›
- последняя »
