#include<iostream> usingnamespace std; voidfunc(constint &a){ cout<<"func(const int &a)调用"<<endl; } intmain(){ int a=10; func(a); return0; }
调用的是上面一个版本,但是如果main函数中是这样写的话:func(10);return 0;那么调用的就是下面这个版本,这里的原因主要通过引用的原理很好理解:int &a=10;不合法,因为引用只能是栈或者堆中的数据,而10是常量,是放在常量区中的,所以不合法。而const int &a=10;是合法的。