1.右值引用中的移动构造函数
对于右值的认识和划分,我们可以把右值分为纯右值(内置类型),将亡值(自定义类型),而对于左值和纯右值的构造,一般来说都是进行的拷贝构造.
就拿这个来说如果传的是左值,和纯右值,那么直接揍上面的那个函数进行拷贝构造,如果传的是一个将亡值,那就走下面的移动构造函数.
1.将亡值
在C++中,将亡值是C++11标准中引入的一个概念,它是右值引用的一种特殊形式。将亡值表示的是即将被销毁或者不再使用的对象,这些对象可以被“窃取”资源,例如它们的非静态成员或拥有的资源。
将亡值具有以下特点:
-
临时对象:通常,将亡值是临时的、没有名字的对象(匿名对象),例如函数返回的临时对象。
-
资源可以被移动:将亡值通常用于移动语义,允许资源的所有权从一个对象转移到另一个对象,从而避免不必要的复制。
-
特殊右值:将亡值是一种特殊的右值,它可以通过右值引用来绑定。
如果是遇到了这种将亡值,就说明出了当前的作用域他就会被自动销毁,如果进行深拷贝的构造函数的话效率可能就会降低,因此,我们就会引入一个移动构造的概念,允许我们进行高效的转移他们,而不是进行复制他们.
对于移动构造和移动复赋值,我们还需要明白的一个点就是,右值引用的本身就是左值,而这样的意义,就是为了移动构造等语法逻辑的自洽,而只有右值引用本身处理成左值,才能实现移动构造
2.万能引用
实参传左值,那就推导成左值引用,如果实参传递的是右值,那就推成右值引用
3.Lambda
当我们想比较两个类里面的某个值的时候,比如说商品里面的价格,我们通常都会用到仿函数来进行比较.
but
主播主播,你的仿函数确实很强势,但还是太吃操作了,有没有什么更简单又强势的写法?
有的,兄弟,有的,这么好的写法当然不止一种,我这还有一种lambda表达式.
Lambda具体怎么写呢?
比较大于的值
比较小于值