有时从头开始很好。 在C ++中,我可以使用下面这个简单的操作: { T x(31, Blue, false); x.~T(); // enough with the old x ::new (&x) T(22, Brown, true); // in with the new! // … } 在范围的末尾,析构函数会再次运行,一切都很顺利。 (让我们也说T有点特别,不喜欢被分配,更不用说交换了。)但是,有些东西告诉我,并不总是没有风险去摧毁一切,然后再试一次。 这种方法有没有可能发生?