如何将对象移动到未初始化的内存中?

时间:2012-07-24 13:19:20

标签: c++ c++11 move-semantics

给定已分配但未初始化的内存位置,如何将某个对象移动到该位置(销毁原始对象),不用构建可能昂贵的中间对象?

1 个答案:

答案 0 :(得分:7)

您可以使用placement new在内存中移动构建它:

void * memory = get_some_memory();
Thing * new_thing = new (memory) Thing(std::move(old_thing));

如果它有一个非平凡的析构函数,那么你需要在完成时明确地销毁它:

new_thing->~Thing();