- 常量的引用可以直接赋予它字面值,非常量不可以。
1 int& r1 = 42;//错误,非常量引用的初始值必须为左值 2 const int& r2 = 42;
- 常量的引用可以绑定非常量的对象(不能通过常量的引用来修改对象的值),非常量的引用不可以绑定常量的对象。
1 int a = 42; 2 const int c = 43; 3 4 int& r1 = c;//错误,将 "int &" 类型的引用绑定到 "const int" 类型的初始值设定项时,限定符被丢弃 5 const int& r2 = a; 6 r2 = 24;//错误,表达式必须是可修改的左值
- 常量的引用可以绑定常量引用的表达式和非常量引用的表达式,非常量的引用都不可以。
int a = 42; const int c = 43; int& r1 = a; const int& r2 = c; const int& r3 = r1 * 5; const int& r4 = r2 * 5; int& r5 = r1 * 5;//错误,非常量引用的初始值必须为左值 int& r6 = r2 * 5;//错误,非常量引用的初始值必须为左值
- 常量的引用可以绑定与之类型不同的变量,非常量的引用不可以。
1 double b = 42.0; 2 3 const int& r2 = b; 4 int& r1 = b;//错误,无法用 "double" 类型的值初始化 "int &" 类型的引用(非常量限定)