参考 Primer C++(第5版) p468~
class C {
public:
C(int v = 0) : v(v) { cout << "构造.." << endl; };
C(C &t) : v(t.v) { cout << "拷贝构造.." << endl; }
//noexcept 表示通知标准库此构造函数不抛出任何异常
C(C &&t) noexcept: v(t.v) { cout << "移动构造.." << endl; }
C &operator=(C &&t) noexcept {
if (this != &t) {
free();
v = t.v;
}
cout << "移动赋值.. " << endl;
return *this;
}
~C() {
free();
cout << "析构.." << endl;
}
int v;
void free() {};
};
int main() {
C c(1);
C b1(c);
C b2(std::move(c));//std:: 不能省略
b2 = std::move(b1);
}