Наследование и scopes
От: Аноним  
Дата: 30.07.05 18:48
Оценка:
Производный класс наследует все члены своего базового класса. Однако к какому scope эти члены будут принадлежать?
Re: Наследование и scopes
От: gbt Россия  
Дата: 31.07.05 01:53
Оценка:
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? Это так?
Re[3]: Наследование и scopes
От: Lorenzo_LAMAS  
Дата: 31.07.05 07:36
Оценка:
А>То получается что члены унаследованные 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:: . Никак не могу понять — это означает что
они являясь частью производного класса все же находятся в области видимости своего базового?
Re[5]: Наследование и scopes
От: Lorenzo_LAMAS  
Дата: 31.07.05 08:12
Оценка:
А>Но ведь мы можем обращаться к ним через A:: . Никак не могу понять — это означает что
А>они являясь частью производного класса все же находятся в области видимости своего базового?

В случае использования квалифицированного имени, поиск осуществляется в области видимости базового класса (в твоем случае класса, а могло бы быть и
имя пространства имен), именем которого ты квалифицировал.
Of course, the code must be complete enough to compile and link.