Hello, , you wrote:
> Производный класс наследует все члены своего базового класса. Однако к > какому scope эти члены будут принадлежать?
Если вы имеете в виду member access scope, то:
Зависит 1) от того, как члены были объявлены; 2) от того, какой вид
наследования:
Member access при объявлении
Вид наследования -> private protected public
private private private private
protected private protected protected
public private protected public
То есть выбирается min из двух спецификаторов.
Такие таблички, по-моему, в каждой книжке рисуют...
--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9
Re[2]: Наследование и scopes
От:
Аноним
Дата:
31.07.05 06:34
Оценка:
Здравствуйте, gbt, Вы писали:
---
Я имею в виду если например:
struct A
{
void f(){}
int i;
//...
};
struct B : public A
{
void f() {}
int i;
//...
};
То получается что члены унаследованные B от A находятся как бы в другой обл. видимости, объемлющей
по отношению к B? Это так?
А>То получается что члены унаследованные B от A находятся как бы в другой обл. видимости, объемлющей А>по отношению к B? Это так?
Тут скрытие имен. Когда ты будешь имя члена-данных i или функции f использовать в области видимости производного класса В (или производного от него), эти имена
в неквалифицированном виде (i = 10, f()будут найдены в производном классе.
Of course, the code must be complete enough to compile and link.
Re[3]: Наследование и scopes
От:
Аноним
Дата:
31.07.05 07:47
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, gbt, Вы писали: А>---
А>Я имею в виду если например:
А>
А>struct A
А>{
А>void f(){}
А>int i;
А>//...
А>};
А>struct B : public A
А>{
А>void f() {}
А>int i;
А>//...
А>};
А>
А>То получается что члены унаследованные B от A находятся как бы в другой обл. видимости, объемлющей А>по отношению к B? Это так?
Да.
Base's scope
{
...
Derived's scope
{
...
}
}
Re[4]: Наследование и scopes
От:
Аноним
Дата:
31.07.05 07:49
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:
А>>То получается что члены унаследованные B от A находятся как бы в другой обл. видимости, объемлющей А>>по отношению к B? Это так?
L_L>Тут скрытие имен.
Но ведь мы можем обращаться к ним через A:: . Никак не могу понять — это означает что
они являясь частью производного класса все же находятся в области видимости своего базового?
А>Но ведь мы можем обращаться к ним через A:: . Никак не могу понять — это означает что А>они являясь частью производного класса все же находятся в области видимости своего базового?
В случае использования квалифицированного имени, поиск осуществляется в области видимости базового класса (в твоем случае класса, а могло бы быть и
имя пространства имен), именем которого ты квалифицировал.
Of course, the code must be complete enough to compile and link.