这是使用移动构造函数为大多数类定义移动赋值的一种非常简单的方法:
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 中,调用您自己的析构函数,然后在 this 指针上放置 new 的顺序是否安全?
除非您从未从此类派生类型。如果这样做,该物体就会变成一个怪物。不幸的是,该标准使用此作为解释对象生命周期的示例。在现实世界的代码中这是一件非常糟糕的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)