воскресенье, 29 ноября 2009 г.

нет, действительно.

почему бы деструктору не принимать параметры?

на самом деле, вот если вы представите ситуацию, что вами никогда не делалась попытка написать ~cl(int aaa){}; а значит вы никогда не видели ошибки компиляции "a destructor must have a 'void' parameter list" и вы вообще никогда не задумывались над этим вопросом, как бы вы рассуждали, если бы вам пришлось сказать может ли он их иметь (без компилятора под рукой)?

ведь можно же например захотеть убить объект по разному. с другой стороны, у нас же есть поля. но это ведь одно другому не мешает. так что без понимания, как это работает, и опыта типа "ткнул_не_получилось", мне кажется, хрен ответишь.

6 комментариев:

Unknown комментирует...

деструктор есть средство автоматического и неявного разрушения, отсюда и вывод --- не может он иметь параметров...

покажи-покажи код =) ранний фидбэк спасает от поздних трудностей =)

dbg комментирует...

ну а еслиб я хотел в добавление к автоматическому удалению удалять, например, безопасно? типа там delete s(1); //удаляет сам объект, записывает в какойнить список дату из него или еще что-нить такого типа

Unknown комментирует...

ну тут получается, что ты хочешь в одном действии хочешь совместить слишком много =)

это нарушение принципов ООП...

dbg комментирует...
Этот комментарий был удален автором.
dbg комментирует...

а, да. об этом не подумал

Unknown комментирует...

ну и явный вызов delete --- это скорее редкость, чем правило... один мой знакомый говорит, что уже несколько лет не использует delete... всё умными указателями =)