Подтвердить что ты не робот

Параметры деструктора

Статья Перегружает деструкторы? рассказывает о перегрузке деструктора.

Возник вопрос: может ли деструктор иметь параметры?

Я никогда не использовал или не видел деструктор с параметрами. Я не мог придумать пример причины использовать параметры для деструктора.

4b9b3361

Ответ 1

Раздел 12.4 С++ 0x черновик n3290 говорит об деструкторах:

деструкторы

Для объявления деструктора в определении класса используется специальный синтаксис декларатора с использованием необязательного спецификатора функции (7.1.2), за которым следует ~, за которым следует имя класса деструкторов, за которым следует пустой список параметров.

(выделено курсивом)

Итак, нет, деструкторы не принимают параметры. (Стандарт 2003 имеет точную формулировку вышеприведенного параграфа.)

Ответ 2

Нет, это простой ответ. Это сделало бы автоматическое управление ресурсами значительной сукой, потому что вам нужно было бы беспокоиться о том, какие параметры деструктор взял и откуда, черт возьми, вы их получите. Что в случае исключения - как компилятор знает, что передать деструктор?

Ответ 3

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

Деструктор должен уничтожить объект, не более того.