这里是一个非常简单的方法来定义一个转移构造几乎所有类移动分配:
class Foo {
public:
Foo(Foo&& foo); // you still have to write this one
Foo& operator=(Foo&& foo) {
if (this != &foo) { // avoid destructing the only copy
this->~Foo(); // call your own destructor
new (this) Foo(std::move(foo)); // call move constructor via placement new
}
return *this;
}
// ...
};
在呼唤自己的析构函数的这个序列,然后放置新上了这个指针在标准C ++ 11安全吗?