c++中的右值和左值
c++的表达式要不然是右值,要不然就是左值.可以做一个简单的归纳:
当一个对象被用作右值的时候,用的是对像的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置).
一个重要的原则:
在需要右值的地方可以用左值来代替,但是不能把右值当成左值(也就是位置)使用.当一个左值被当成右值使用时,实际使用的是它的内容(值).
使用关键字decltype的时候,左值和右值也有所不同.如果表达式的求值结果是左值,decltype作用于该表达式(不是变量)得到一个引用类型.举个例子,假定P的类型是int *,因为解引用去处符生成左值,所以decltype(*p)的结果是int&.另一方面,因为取地址运算符生成左值,所以decltype(&p)的结果是int **,也就是说,结果是一个指向整形指针的指针.
c++ Primer 5th,P121
浙公网安备 33010602011771号