常量的引用Vs非常量的引用(普通的引用)

发布时间 2023-04-14 17:34:36作者: 小凉拖
  • 常量的引用可以直接赋予它字面值,非常量不可以。
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 &" 类型的引用(非常量限定)