|
|
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Вопрос к тем кто понимает в наследовании =) К примеру есть класс1 в нем два поля одно из них private и один метод public который складывает два числа. Далее наследуем от этого класса , класс2. Происходит ли копирование членов класса1 в класс2, или просто создаются ссылки на эти члены, но физически они будут нах в классе1.Также если обратиться в потомке к методу из класса 1 то не произойдет ли ошибка т.к. в классе1 одно поле private. Всем спасибо кто посмотрит и ответит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 16:50 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Если обратиться к публик методу, то ошибки не будет. Для чего же еще открытые члены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 18:12 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
privatы не доступны нигде кроме как в самом классе копирования не происходит Хотя многие вещи зависят от реализации. лучше спрашивать по конкретному яп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 18:56 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Интересно wrote: > Здравствуйте. > Вопрос к тем кто понимает в наследовании =) > К примеру есть класс1 в нем два поля одно из них private и один метод > public который складывает два числа. Далее наследуем от этого класса , > класс2. Происходит ли копирование членов класса1 в класс2, или просто > создаются ссылки на эти члены, но физически они будут нах в классе1.Также > если обратиться в потомке к методу из класса 1 то не произойдет ли ошибка > т.к. в классе1 одно поле private. > > Всем спасибо кто посмотрит и ответит. (к слову) Язык то какой? :) Если от класса "A" наследуется класс "B", то экземпляр класса "B" содержит в себе все поля данных класса "A", даже если они недоступны (запихнуты в private). Это справедливо, как минимум, для C++/Delphi. Кроме этого, экземпляр класса будет содержать в себе таблицу виртуальных методов (в Delphi - ещё и таблицу динамических, насколько я помню). В потомке можно обращаться к методам базового класса. Можно присвоить экземпляру класса "A" экземпляр класса "B", и т.д. Насчет "копирования". Есть экземпляр класса. Как вы себе представляете в нем ссылки на поля базового класса? Для этого нужно создать ещё один экземпляр, так ведь? :) >но физически они будут нах ??? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 19:02 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
ErV Если от класса "A" наследуется класс "B", то экземпляр класса "B" содержит в себе все поля данных класса "A", даже если они недоступны (запихнуты в private). Это справедливо, как минимум, для C++/Delphi. Насчет "копирования". Есть экземпляр класса. Как вы себе представляете в нем ссылки на поля базового класса? Для этого нужно создать ещё один экземпляр, так ведь? :) Наследник использует унаследованные поля, но содержит их базовый класс. http://valera.asf.ru/cpp/book/c17.shtml авторstatic vector<string> *_text_file; Создается ли при порождении класса NameQuery второй экземпляр _text_file, уникальный именно для него? Нет. Все объекты производного класса ссылаются на тот же самый, единственный разделяемый статический член. Сколько бы ни было производных классов, существует лишь один экземпляр _text_file. Можно обратиться к нему через объект производного класса с помощью синтаксиса доступа:... там же кстати есть про про друзей (friend), получающих доступ к private - членам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 05:43 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
ErV Если от класса "A" наследуется класс "B", то экземпляр класса "B" содержит в себе все поля данных А, экземпляр конечно содержит, он ведь и экземпляр "A" тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 05:47 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
Вот здесь статья неплохо разжевано http://www.devdoc.ru/index.php/content/view/virtual_base.htm А вопрос был применительно к шарпу. >но физически они будут нах ??? Я имел ввиду копии будут и в падонке или только в базовом + какой-нибудь хитроумный механизм доступа к ним в падонке =). Всем thx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 11:28 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
интересно wrote: > Я имел ввиду копии будут и в падонке или только в базовом + какой-нибудь > хитроумный механизм доступа к ним в падонке =). Применительно к C++ и дельфи наследование вот так выглядит: Вот это: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. в памяти согласно порядку их объявления) эквивалентно вот этому: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Имеется в виду - "эквивалентны по расположению в памяти". Вообще, в MSDN должны быть статьи по наследованию. Для C++ там, к примеру, очень подробно рассматривается структура классов, порядок вызова конструкторов, как собирается класс при множественном наследовании, как он расположен в памяти и т.д. Хотите сказать, что для C# подобной инфы в справке Visual Studio нет? :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 04:51 |
|
||
|
Наследование
|
|||
|---|---|---|---|
|
#18+
С цепочками вызовов конструкторов в литературе вроде как проблем нет нормально описано, а вот с расположением в памяти как в выше приведённой статье с этим так сказать есть затруднения, хотя вещи эти для объяснения обязательные. Просто раньше не вникал в суть как и что, мол наследуется да и бог с ним, вроде есть доступ больше и не надо знать. остальное на совести компилятора =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 11:03 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34560439&tid=1346025]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
143ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 432ms |

| 0 / 0 |
