![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
![]()
А поповоду вызова в Destroy потомка дестроя предка.... Вот в приведенном примере базовый клас создается "снуля". Т.е. нет предка, зачем в его Destroy вызывать inherited;?
А если бы там был не TStringList, а какой-нить integer, то нужно ли вызывать дестрой предка? |
![]() |
![]() |
![]() |
#12 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
1)потому что корневой дестрой это освобождение памяти
2)можно оставить старый от TObject(о нем выше сказал) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#13 | |
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
![]() Цитата:
![]() А насколько корректно создание классов без конструкторов и деструкторов? Объясняю смысл. Есть несколько разношерстных объектов. Обсолютно разные данныЕ, абсолютно раззные задачи. Но при запуске программы нужно в них загрузить данные, и в конце сохранить. Что мне думается. Создать TList, туда запихнуть указатели на эти объеты. И в цикле вызывать у них метод Load и Save соответсвенно. Но если они будут разных классов, то в цикле так не получится. Поэтому делаем базовый клас, который имеет только две функции Load и Save, а классы этих объетов наследуем от этого базового класса с переназвачением этих функций. И в цикле мы работаем с этими объектами как с членами базового класса. Т.е. базовый клас чисто шаблон, без начинки. Нужно ли в базовом класе делать Create и Destroy? Ну с Create понятно - ненадо. А Destroy? Я так понимаю что когда создается объект класса предка, то на него выделяется память от базового класса и от класса потомка. Если вызвать Destroy этого объекта то освободится память потомка, а память предка нет. Я правильно понимаю? Последний раз редактировалось Stilet; 10.08.2009 в 09:59. |
|
![]() |
![]() |
![]() |
#14 |
New Delphi Coder
Форумчанин Подтвердите свой е-майл
Регистрация: 20.07.2008
Сообщений: 874
|
![]()
А разве нельзя в не "ovveride" методе вызвать inherited или же он не будет работать, но точно не ругается на вызов.
Страх это слабость и потому, кто испугался уже побежден.
|
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
![]() |
![]() |
![]() |
![]() |
#16 | ||
New Delphi Coder
Форумчанин Подтвердите свой е-майл
Регистрация: 20.07.2008
Сообщений: 874
|
![]() Код:
Цитата:
Цитата:
Страх это слабость и потому, кто испугался уже побежден.
Последний раз редактировалось Mixasik; 09.08.2009 в 00:07. |
||
![]() |
![]() |
![]() |
#17 |
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
![]()
Непонял по поводу "переопределен" и "перекрыт". Какая разница? Если и в первом и во втором случаи можно вызвать функцию предка?
|
![]() |
![]() |
![]() |
#18 | ||
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]() Цитата:
![]() Вот так видно отличие overrided-методов Код:
Base, Overrided и Hidden обьявлены как TBaseClass, т.к. это их общий предок (точно так же многие функции принимают в качестве параметра базовый TStream, которым может быть TMemoryStream, TFileStream, TStringStream...) Цитата:
пыщь
Последний раз редактировалось JTG; 09.08.2009 в 02:40. |
||
![]() |
![]() |
![]() |
#19 | |
Форумчанин
Регистрация: 08.01.2008
Сообщений: 233
|
![]() Цитата:
Может кто ссылку даст почитать какую-нить, а то я с этими наследованиями запутался..... ![]() Что то я запутался... открыл свой проект. Убрал у предка virtual, у потомка override. И все работает. Вызывается метод потомка и отрабатывает.... Последний раз редактировалось Stilet; 10.08.2009 в 09:59. |
|
![]() |
![]() |
![]() |
#20 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Какой результат-то нужен? Код в студию
пыщь
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
что означает это сообщение? | 54rus | Помощь студентам | 15 | 23.07.2009 18:05 |
Что означает маркировка кабеля Plenum | Sjava | Помощь студентам | 1 | 22.05.2009 23:32 |
Что означает HWND_DESKTOP или Handle в функции MessageBox | prikolist | Общие вопросы C/C++ | 5 | 18.03.2009 20:47 |
Подскажите пожалуйста, что означает строчка??? | EDDY | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 25.07.2008 16:32 |