@ Nav: нет, ваше понимание «уничтожено» просто неверно. Когда вызывается деструктор объекта, объект уничтожается. Кажется, вы верите, что память, в которой он хранился, полностью испаряется, но этого никогда не происходит. Объект больше не существует, но некоторые ненужные данные обычно остаются объектом, и если вы хотите нарушить правила C ++ и вызвать неопределенное поведение, вы можете прочитать эти оставшиеся байты, и они будут выглядят как объект, и поскольку во время выполнения не проверяется, обращаетесь ли вы к действительному объекту, вы часто рассматриваете их как объект. Что вы делаете.
Это незаконно, это неопределенное поведение, но на практике это часто работает.
Еще раз, деструктор физически не испаряет память. Ваша оперативная память по-прежнему имеет такую же емкость после выполнения деструктора. Концептуально объект больше не существует после запуска деструктора. Но содержащиеся в нем данные все еще находятся в памяти.