Неееееееееееееееет.
Не делайте этого.
Деструктор - это не просто функция, которая вызывает некоторые операции над вашими членами.
Он заканчивается время жизни вашего объекта.
Период. Полная остановка.
Вы не можете вызвать деструктор, а затем продолжать использовать объект. Вызов его оператора присваивания с временным также не возвращает его к жизни; это просто вызывает оператор присваивания для изменения некоторых значений. Значения, которые больше не существуют.
В нескольких случаях разумно вызывать деструктор, но все они включают "очень ручное управление памятью" с использованием размещения new
. В принципе нет других приемлемых времен для этого.
Просмотрите понятие времени жизни объекта в C ++.
Если ваш оператор присваивания копии написан правильно, то просто *this = aClass();
уже подходит для сброс ваших объектов. Вы могли бы также рассмотреть aClass().swap(*this)
, с соответствующей способностью к перемещению swap
, добавляемой в ваш класс.
Это не «избыточные» операции.