首先回顾一下const常类型的作用:使形参在子函数中调用时成为一个常量来使用,既无法成为左值,无法修改形参的值。
引用&的作用:例如a=&b,那么表示a是b的别名,此时a和b的地址相同。在子函数中调用时,形参的改变就是实参的改变,不像C中需要用到指针来实现。
刚开始接触常引用的时候,我就有一个困惑,既然引用是在子函数中改变实参的值,而常类型又是在子函数中无法改变形参的值,那么常引用到底有什么作用?
我们主要来比较一下常引用和常类型的区别:
常引用: 常类型:
当需要在子函数change()中把b当做常量来使用,那么使用右边的代码。 那么添加了一个&引用符的区别在哪里呢?
如左边的代码,之前说过引用的作用,此时b的地址和a的地址是相同的,在子函数中c=b等于c=a;
子函数调用时,并没有申请一个空间来存放形参b,也不用将实参a的值传给形参b,因此使程序运行更简化。
此时的b也是不可改变的,并没有破坏常类型的作用。