Ну можете заменить ее на более длинное x = new int[1]; *x = *y; delete[] y; y = nullptr;
Так x тут "воскресает"? Или нет?
Объект уничтожается после вызова delete x. Как это происходит зависит от реализации деструктора, рантайма, действий ОС и т.п. и в стандарте неопределенно.
Я не знаю ничего про какие-то "виртуальные существа". Есть объект на который натравили delete. Есть его копия в y. И вы уже ~8 лет пытаетесь придумать тут парадокс вопрошая "а можно ли считать копию оригиналом?". Да как хотите так и считайте.
Как я уже написал, точка зрения на судьбу объекта после его копирования и удаления может быть самой разной и это не приводит ни к какому парадоксу. Это просто точка зрения, которая может отличаться.
Так x тут "воскресает"? Или нет?
Вы должны определить условия, при которых виртуальное существо умирает.
Видимо, вы считаете, что применение оператора delete к области памяти, занимаемой нашим виртуальным существом убивает его. Несмотря на то, что у нас имеется его копия.
Допустим вы утверждаете, что обе точки зрения правильные, и значит можно считать наше подопытное существо мёртвым. Вы утверждаете что это правильно!
А завтра вам вздумалось считать его живым. Вы опять утверждаете что это правильно!
А завтра вам вздумалось считать его живым. Вы опять утверждаете что это правильно!
Комментарий