std::move在提高 swap 函数的的性能上非常有帮助,一般来说,swap函数的通用定义如下:
template <classT> swap(T& a, T& b)
{
T tmp(a); // copy a to tmp
a = b; // copy b to a
b = tmp; // copy tmp to b
}
有了 std::move,swap 函数的定义变为 :
template <classT> swap(T& a, T& b)
{
T tmp(std::move(a)); // move a to tmp
a = std::move(b); // move b to a
b = std::move(tmp); // move tmp to b
}
ecplicit关键字
显式的方式调用,抑制隐式转换
一般构造函数前带ecplicit关键字,抑制赋值构造函数到显式构造函数的转换
class test{
public:
explicittest(int n){num = n;}
private:
int num;
}
int main(){
test t = 12;//错误,不能隐式转换为赋值构造函数
}