void print1(int a)
{
cout<<a<<endl;
}
void print2(const int& a)
{
cout<<a<<endl;
}
void print3(int& a)
{
cout<<a<<endl;
}
int main()
{
int a = 10;
int& b = a;
const int& c = a;
print1(a);
print1(b);
print1(c);
print2(a);
print2(b);
print2(c);
print3(a);
print3(b);
print3(c);
return 0;
}
编译以上代码,仅print3(c)处报错:
error: C2664: “void print3(int &)”: 无法将参数 1 从“const int”转换为“int &”转换丢失限定符
因此,const引用可以给非const引用赋值,而反过来不行,所以编写接口参数时,尽量使用const引用