最后一个板块,我们来详细的探讨下const引用,基本格式为-----const 类型&
在我们编写函数时,经常会发现常将const引用作为形参,这不仅仅是因为想让const修饰的值不在函数体内部被改变,而更重要的是关乎权限。
首先,我们先来感受一下权限。
?#include<iostream>
using namespace std;
int main(void)
{
? ? int a = 10;
? ? const int b = 20;
? ? int* c = &a;
? ? c = &b;
? ? const int* d = &a;
? ? d = &b;
? ? return 0;
}
通过上述代码,以及编译报错,我们可以很清楚的看到c=&b这一条指令是无法编译通过的,为什么?
答案是a是一个大权限,而b在被const修饰之后权限会变小。这就好比你借了朋友一个玩具,原先你可以使劲造,坏了就坏了,你甚至可以还回另一个相类似玩具,但在const修饰后,你就只有玩的权利,但务必保证玩具的原装性及不毁坏性,无形中你的权利被缩小了。如果我们用普通指针可以接收,就会意味着b的值可以通过解引用被修改,这显然是不可能的。
?那么,回归主题,为什么用const引用做形参?
答案是这样你可以接收更大范围的数值,比如常量,因为其具有常量只读属性,所以只能用小权限来接收小权限。
?最后,让我说一下与这篇文章无关的内容,因为内容比较少,就不单独写出一份博客
********************************************************************************************************
首先我们先了解一句话:
所有的隐式转换,显式转换都会生成临时变量
double d=12.34;
cout<<(int)d<<endl
对于这样一份代码,有没有人想过d的值会被改变吗?
答案是并不会,那既然没有被改变,为什么会打印出12?
结果自然显而易见,因为有临时变量的生成,隐式转换也是如此。
最后,也请大家积极在评论区讨论,提些意见哦,一起学习C++,冲!
|