2016-06-01 3 views
3

Когда я создаю свой собственный класс в Delphi Application я использую стандартную процедуру:Создает ли каждый класс, который мы создаем в Delphi, деструктор?

TCustomClass = Class 
private 
    var1,var2 : integer/string/Real/Boolean... 
    procedure P1... 
    function F1... 
public 
    constructor Create; 
end; 

... 

CustomClass := TCustomClass.create; 

Я хочу знать, я всегда должен также создать процедуру деструктора или ресурсы автоматически бесплатно, когда приложение закрывается?

Я всегда использую Приложение как владелец, редко Я или Нил, и я не помню, я видел, как кто-то объявлял Деструктор на классах, которые я видел в Интернете, кроме одного, когда кто-то использовал указатели.

ли логика деструктора же в Delphi, как и в C++, как описано в этом вопросе:

Should every class have a virtual destructor?

Спасибо заранее.

EDIT1: Как Free Consulting упоминал, что я забыл сказать, что одна из переменных может быть TBitmap Типу

+1

Каждый класс в Delphi уже имеет виртуальный деструктор. Проблема в том, нужно ли ее переопределить. Переопределите его, если ваш класс должен выполнить финализацию ресурсов, приобретенных этим классом, которые не были завершены суперклассом. –

+1

Вы должны включить тот факт, что вы используете член TBitmap в своем вопросе. –

ответ

3

Он только должен иметь деструктор, если вам необходимо очистить что-то, как распределенную память. Например, если вы использовали TClassname.Create (...) в конструкторе, вам нужно освободить его в методе деструктора.

Конечно, может потребоваться много разных причин для деструктора (вплоть до информирования пользователя о том, что его данные вот-вот будут стерты), но это самый распространенный.

+0

Если я использую Bitmap: TBitmap.create для инициализации переменной Tbitmap в этом классе, мне нужно вызвать деструктор? –

+0

Вам не нужно ЗВОНОК дедуктора, что делается автоматически; НО деструктор должен включать Bitmap.Free – Jur

+0

Извините, что я должен сказать, что я должен объявить деструктор в объявлении класса. –

Смежные вопросы