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引用