Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Соnstructor, Destructor

Автор: sheka 11.03.2011 5:53

Соnstructor, Destructor обязательно ли их писать в наследниках, если они описаны в родителях?

Автор: volvo 11.03.2011 6:40

Мало ли кто где описан? А если наследник должен для корректной работы установить какие-то свои поля, или память выделить, за него это что, родитель делать будет? А удалять память (причем правильно удалять, столько, сколько было выделено именно для этого объекта) кто будет? Тоже родитель? Зачем тогда тебе иерархия? Пользуйся одним родителем, раз он все делает...

Автор: sheka 11.03.2011 22:36

Цитата
А удалять память (причем правильно удалять, столько, сколько было выделено именно для этого объекта) кто будет?

Соnstructor, Destructor описан только в родителе и оба пустые. При вызове из экземпляра наследника память правильно не выделится/удалится?

Автор: volvo 11.03.2011 22:39

Пустой конструктор можешь убрать, он унаследуется от предка. Деструктор я бы оставил, даже больше того, сделал бы его виртуальным, поскольку у тебя есть виртуальные функции...

Автор: sheka 12.03.2011 4:22

Цитата
Деструктор я бы оставил, даже больше того, сделал бы его виртуальным, поскольку у тебя есть виртуальные функции...

Как виртуальность деструктора будет влиять на программу? Он же все равно ниоткуда из методов вызываться не будет. Почему пустой конструктор можно убрать, а деструктор нет?

Автор: volvo 12.03.2011 5:26

Цитата
Как виртуальность деструктора будет влиять на программу?
То, что деструктор базового для всех класса TObject - виртуальный, для тебя, конечно, не показатель? smile.gif Или ты думаешь, что если ты не используешь классы, а используешь Object-ы, то у тебя ООП вдруг становится другим, и играет по другим правилам? Ну-ну... Играй по своим правилам. Потом не жалуйся, что где-то падает, а где - непонятно.

Автор: sheka 14.03.2011 1:49

Цитата
Пустой конструктор можешь убрать, он унаследуется от предка. Деструктор я бы оставил, даже больше того, сделал бы его виртуальным, поскольку у тебя есть виртуальные функции...

Упс. Вот http://forum.pascal.net.ru/index.php?s=&showtopic=27801&view=findpost&p=153166 не внимательно 2й пост прочитал smile.gif