C++中引用和指针的const限定可以分为以下几种形式:
1、普通引用
int a = 1;
int &r = a;
普通引用不能绑定到常量对象上
2、对常量的引用
const int a = 1;
const int &r = a;
引用本身不是对象,因此引用不能成为常量(不存在常量引用)
对常量的引用可以绑定到常量、非常量、字面值和表达式(只要是能隐式地转换为引用的类型就行)
3、普通指针
int i = 1;
int *p = &i;
普通指针不能指向常量对象
4、指向常量的指针
const int i = 1;
const int *p = &i;
指向常量的指针和“对常量的引用”一样既可以指向常量也可以指向非常量
5、常量指针
int i = 1;
int *const p = &i;
指针本身是常量
6、指向常量的常量指针
const int i = 1;
const int *const p = &i;
从右往左读就很好理解:p首先是常量,其次是指针,最后指向的是常量