const的引用:
可以把引用绑定到const对象上,我们称之为对常量的引用(reference to const)。与普通引用不同的是,对常量的引用不能被用作修改它所绑定的对象:
const int ci = 1024;
const int &r1 = ci;//正确;
r1=42;//错误,r1是对常量的引用
int &r2 = ci;//错误,非常量引用无法绑定常量对象
int i = 42;
const int &r2 = i;//正确,允许为一个常量引用绑定非常量的对象
注:“对常量的引用”通常称为“常量引用”。
指针和const:
指向常量的指针不能用于改变其所指对象的值。要想存放常量对象的地址,只能使用指向常量的指针。
const double pi = 3.14;//pi是一个常量
double *ptr = π//错误,ptr是一个普通指针
const double *ptr = π//正确
const指针:
指针本身可以被定为常量。常量指针(const pointer)必须初始化,一旦初始化完成,则它的值(也就是存放在指针中的那个地址)就不能再改变了。把 * 放在 const 前面用以说明指针是一个常量。
顶层const(top-level const)表示指针本身是个常量,而名词底层const(low-level const)表示指针所指的对象是一个常量。
const int *const p1 = p;//靠右的const是顶层const,靠左的是底层const
Note:如果想在多个文件之间共享 const 对象,必须在变量的定义之前添加extern关键字。