Здравствуйте, MagIH, Вы писали:
MIH>Всё правильно. За исключением того, что смысла в таком коде мало.
Да ну

тут undefined behavior во всей красе
MIH>А как м почему это работает объясняется легко.
Очень. Одно из проявлений undefined behavior рабочая программа.
То что дальше один сплошной гон. Деструктор это именно функция разрушающея объект те после его работы остается сырая память и даже если там остается фактически инвариант объекта то пользоватся им всеравно нельзя иначе undefined behavior. А то что перед разрушением самого объекта можно выполнить свой код это не отменяет разрушение объекта деструктором. Для того чтобы на томже месте создать новый объект нужно вызвать placement new те конструктор.
Оператор delete сначала вызывает деструктор это ты у него не как не отнимишь, а потом должен освободить память которую выделил new менно функцию освобождающею память и можно перегрузить но в нее в любом случае попадет указатель на мертвый объект.
... << RSDN@Home 1.1 beta 2 >>