Здравствуйте, WolfHound, Вы писали:
MIH>>Всё правильно. За исключением того, что смысла в таком коде мало.
WH>Да ну
тут undefined behavior во всей красе
MIH>>А как м почему это работает объясняется легко.
WH>Очень. Одно из проявлений undefined behavior рабочая программа.
Легко сказать "undefined behavior" когда не понимаешь, как это работает. Попытайся заодно объяснить, почему этот код будет работать одинакого на ЛЮБОЙ платформе, если его поведение "не предсказуемо"...
WH>То что дальше один сплошной гон. Деструктор это именно функция разрушающея объект те после его работы остается сырая память и даже если там остается фактически инвариант объекта то пользоватся им всеравно нельзя иначе undefined behavior. А то что перед разрушением самого объекта можно выполнить свой код это не отменяет разрушение объекта деструктором. Для того чтобы на томже месте создать новый объект нужно вызвать placement new те конструктор.
Интересное заявление. Может быть укажешь — откуда конкренто ты это взял? Хотя бы место в стандарте C++, где такое написано...

Кроме того — если бы это было правдой — то в чём заключалось бы различие между деструктором и оператором delete? И наконец, посмотри ради интереса дезассемблированный код люой программы — которая явно вызывает деструктор. Я смотрел дезассемблированый код VC++, GNU и Watcom — код аналогичен и разрушения объекта там не происходит.
WH>Оператор delete сначала вызывает деструктор это ты у него не как не отнимишь, а потом должен освободить память которую выделил new менно функцию освобождающею память и можно перегрузить но в нее в любом случае попадет указатель на мертвый объект.
— Всё правильно, однако чем это противоречит тому, что я писал? Как раз таки — подтверждает. Область памяти, занимаемая объектом, после вызова деструктора — прекрасно остаётся, но вот пользоваться ей — без инициализации — черевато, потому её надо либо освободить, либо переинициализировать...
P.S. Повторять слова Энштейна и быть им — вещи разные...