1.1 写在开头
也许有朋友看到这个介绍,会一笑而过。认为,Lvaues不就是,出现在赋值运算符“=”左边的表达式么,相应的rvalues不就是出现在赋值运算符“=”右边的部分么,这有啥难的呢?
hand一下!其实在写这篇文章之前,我和你的想法一样。平时看资料,调试代码的时候,经常遇到lvaues和rvalues这两个词。并且每次看到都认为是很简单,不重要的东西,所以都略过,更谈不上深究。但,老是感觉很别扭,既然这么简单的东西,为什么在技术资料中作为术语呢?并且编译器报错,也提到这两个词呢?
今天找了一些资料,仔细学习了一下,才知道,之前的理解也是没有错。不过,仅仅是表面文字理解,没有抓住本质而已。
1.2 定义
Ø lvaues本质“就是指一些对象、或者是表达式。这些对象、表达式必须代表一块内存区域”。换句话说,lvaues就是代表一块内存区域的对象(object)或者是表达式(expression)。
Ø Lvaues,有“可修改”和“不可修改”之分。
例如:
可修改的lvaues:
Int *p;
Int n;
std::string& student_name();
不可修改的lvaues(一般都是常量对象):
const std::stringname;
Ø rvalues 被定义为“除了lvaues以为的所有对象、或者表达式”。其实,本质是“不能表示一块内存区域”。
总结: