blackbit (15.04.2005 13:02, просмотров: 1) ответил Сергей Борщ на Все равно не догоняю
Примеры в учебниках есть, хе хе.. А вообще, на что примеры-то? Как классы наследовать?
>Методы доступа будут наследованием распространяться на
>производный класс, но не на его члены, которые суть члены
>структуры.
Не совсем понял. Если класс B наследик класс A, то он наследует
от него ВСЁ, что не защищено в А: и методы, и переменные, и
внедренные объекты, и... "члены моего кружка, и кружки моего
члена". Ему не нужно заново все это создавать. Он, класс B
объявляет и создает только то, что нужнно ему и что нельзя
позаимствовать у родителя. Короче, дети, как правило, паразитируют
на родителях, дажеть здесь..
TMemBase->TMemInside->TMemExe
TMemBase - базовый абстрактный класс. Будет содержать только
"скелет": абстрактные виртуальные ф-ции, пусть ReadByte и WriteByte.
ТМemInside, TMemEx его потомки. Они так же содержат виртуальные
ReadByte и WriteByte, которые будет не перегружаться, а _замещаться_,
в зависимости от того, на какой из потомков будет указывать в
данный момент ptrMem:
TMemBase * ptrMem;
Это есть стержень. Передвигаем указатель на нужный тип памяти, реализуемый
соответствующим классом TMemInside или TMemEx и вызываем эти
самые ReadByte, WriteByte, они будут работать с памятью нужной нам.
Потомок сам реализует обращение к памяти, а вот что внутри него
снаружи видно не будет, да и не нужно. Получаем единообразие работы
с различными типами памяти, что и требовалось в вводной (как я ее
понял). Вот он какой, северный полиморфизм...
Все остальные функции TMemInside и TMemEx делать виртуальными не
нужно, а TMemEx сможет "за кулисами" пользоваться теми потрохами
TMemInside, которые ему нужны.. "все лучшее - детям", етить.