Наследование и 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.