给定已分配但未初始化的内存位置,如何将某个对象移动到该位置(销毁原始对象),不用构建可能昂贵的中间对象?
答案 0 :(得分:7)
您可以使用placement new在内存中移动构建它:
void * memory = get_some_memory();
Thing * new_thing = new (memory) Thing(std::move(old_thing));
如果它有一个非平凡的析构函数,那么你需要在完成时明确地销毁它:
new_thing->~Thing();