std::move
21天是肯定没法学会C++的。22天也不行。 C++11里引入了一个新的概念 :移动。 这个概念说简单其实很简单,因为它是介于拷贝和引用之间的一种概念。但还是有很多小伙伴表示不理解移动到底做了什么,如何理解移动。 要想理解移动,先来介绍一个概念:左值与右值。 左值与右值 笼统来讲,左值就是能够对其取地址的值。反之就是右值(临时变量也是右值)。比如1, 2.0, true, nullptr这种纯值类型,就是妥妥的右值。再比如 int a = 100; , a是左值,100是右值。在给a赋值的过程中,我们将右值拷贝到了左值。(其实并不是完全这样,编译器会做一定程度的优化,但为了方便理解,我们不考虑编译器的功劳) 两个栗子 在早期C++里,我们通常用指针或者引用来传递一个大变量,因为可以避免一次拷贝的开销。第一个栗子:如果我们有一个比较大的右值变量,我想将它传递给其他的函数,该如何避免/减少拷贝的开销呢?比较熟悉的朋友可能会说,我们可以传递 const & […]