Hello everybody!今天给大家讲讲有关const引用部分的知识,因为这部分知识涉及到const与引用直接如何灵活的运用,且不太好理解。所以我认为讲一下这里的知识还是很有必要的!
1.权限可缩小
首先,当我们定义了a,在给a取别名时加上const。这时,b虽然是a的别名,但不能通过b改变a的值,只能通过b读取a的值。
但是a可以自己修改自己。
这样b的权限只剩下读取权限,这叫权限的缩小。
2.权限的放大
如果在定义a时,直接用const修饰。那么a就没有了修改权限,给a起的别名也自然没有修改权限,只有读取权限。因此,在给a起别名时,都需要加const,否则编译器会报错。
3.常量,临时变量不可修改
这里的意思是直接给一个常量起别名,这里需要加const,因为常量不可修改。
这里,a+b这个表达式的值是临时变量,临时变量不可修改,需要加const。
此外,在这类数据类型不匹配时,会取a的整数部分作为一个临时变量储存起来。然后再把这个临时变量赋值给x。
由于在赋值过程中因为类型转换会出现临时变量,临时变量不可修改,需要加上const。
此外,这种情况也是如此。在判断i与j是否相等时,需要对j进行整型提升,当它们都是int型时才有可比性。
但是在j整型提升的过程中,不是直接把j提升到4个字节,编译器不会改变j的存储空间大小。而是生成一个数值与j相等的整型的临时变量,让这个临时变量与i比较!
既然会生成临时变量,就需要加const,否则编译器会报错。