值与引用,准确的说是C++11后的值与引用。
因为这时候才明确的出现了右值引用,然后能讨论的东西就出来了,
那就是 左值、右值当然还有对应的左值引用和右值引用。
我第一次接触右值引用的时候是在看SFINAE相关方面的内容时,
当我第一次看到了 auto&& 这种写法,一脸蒙蔽,这是啥啊?
好在有标准文档的帮助,让我了解到了右值引用,但随之而来的,移动语义和完美转发等术语真的让我头大。
可不懂就得学啊,经过一段时间的摸索,终于对这些概念有了较清楚的认识了。
左值右值,通俗的讲就是左值是可以出现在等号的左边,能够被赋值,除了左值以外都是右值,也可以理解为出现在等号右边的值。
铺开来讲,你可能听说过:亡值,泛左值,纯右值 等术语。
有以下定义:
在c++11以后,表达式按值类别分,必然属于以下三者之一:左值(left value,lvalue),将亡值(expiring value,xvalue),纯右值(pure rvalue,pralue)。其中,左值和将亡值合称泛左值(generalized lvalue,glvalue),纯右值和亡值合称右值(right value,rvalue)。见下图,
左值右值有很多种方法解释