【发布时间】:2015-03-03 10:03:11
【问题描述】:
假设我有一个管理内存的类,因此需要用户定义的特殊成员函数(想象一下vector 或类似的)。
考虑以下移动赋值运算符的实现:
Class& operator=(Class&& rhs)
{
this->~Class(); // call destructor
new (this) Class(std::move(rhs)); // call move constructor in-place
}
以这种方式实现移动赋值运算符是否有效?也就是说,以这种方式调用析构函数和构造函数不会违反语言中的任何对象生命周期规则吗?
以这种方式实现移动赋值运算符是否是一个好主意?如果没有,为什么不呢,有没有更好的规范方法?
【问题讨论】:
-
如果
~Class或new (this) Class(std::move(rhs))抛出会发生什么?
标签: c++ c++11 move-semantics move-constructor