Size: a a a

2020 February 08

KB

Kit Bayun in Delphi & Lazarus
а они virtual?
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Когда ты создаешь класс TMyClass = class, то это равнозначно TMyClass = class(TObject)
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
А у TObject, метод Destroy - определён и как virtual
источник

KB

Kit Bayun in Delphi & Lazarus
и для destroy всегда нужен override, так?
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Угу
источник

KB

Kit Bayun in Delphi & Lazarus
да, залез в геном, вижу destructor Destroy; virtual;
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Ага, пустой метод)
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Я так понимаю, его оставили пустым, чтобы определение метода Destroy не было обязательным
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Как например, если бы его оставили абстрактным
источник

AS

Alexey Shumkin in Delphi & Lazarus
Kit Bayun
override забыл :)
inherited тоже забыл
источник

AS

Alexey Shumkin in Delphi & Lazarus
Kit Bayun
всё равно не понял
Почитай про виртуальные методы, что это и для чего
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Alexey Shumkin
inherited тоже забыл
Ну, если у него предок TObject, то inherited не обязателен
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Для Destroy
источник

KB

Kit Bayun in Delphi & Lazarus
destructor TKvxListsStyles.Destroy;
begin
 if Assigned(TypesList) then
   TypesList.Free;

 if Assigned(RegionsList) then
   RegionsList.Free;
 Inherited;
end;
теперь норм
источник

KB

Kit Bayun in Delphi & Lazarus
Геннадий Малинин
Ну, если у него предок TObject, то inherited не обязателен
ок, спасибо
источник

AS

Alexey Shumkin in Delphi & Lazarus
Kit Bayun
вот как раз при отсутствующем override у деструктора и не выдал :(
Используй live templates... Или шаблоны кода из cnPack (если в твоей  Делфи (7? тьфу 😁) нет live templates)
Тогда не будет проблемы вида "забыл написать override для Destroy"
Да и ваще быстрее код писать будешь...
источник

AS

Alexey Shumkin in Delphi & Lazarus
Геннадий Малинин
Ну, если у него предок TObject, то inherited не обязателен
Если, да кабы... Привычка должна быть
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Alexey Shumkin
Если, да кабы... Привычка должна быть
Ну кабы зачем вызывать пустой родительский метод? Просто нужно понимать, что ты делаешь
источник

AS

Alexey Shumkin in Delphi & Lazarus
Кстати, современная Делфи при class completion для переопределяемых методов сама добавляет inherited...
источник

KB

Kit Bayun in Delphi & Lazarus
Alexey Shumkin
Используй live templates... Или шаблоны кода из cnPack (если в твоей  Делфи (7? тьфу 😁) нет live templates)
Тогда не будет проблемы вида "забыл написать override для Destroy"
Да и ваще быстрее код писать будешь...
это?
источник