关于const的用法
1、const与值
const可以限定变量,让其不能发生改变,如下代码。
const int val;
但是默认状态下,const限定了的对象仅仅在本文件内有效,如果一个工程由多个文件构成,那么必须在每个文件中都重复定义一次才行,而这个显然是非常麻烦的。另一种简单的办法,是使用extern关键字,让该常量能让其他文件访问。
extern const int val;
2、顶层const与底层const
顶层const表示指针本身就是一个常量,而底层const表示指针所指的对象是一个常量,如下:
int i=0; int *const p1=&i; //这是一个顶层指针,表示p1只能指向i const int ci=42; const int *p2=ci; //这是一个底层指针,表示p2指向的是一个const的定值 const int *const p3=p2; //靠右的const是顶层const,靠左的是底层const const int &r=ci; //声明引用的const都是底层const int *p=p3; //错误,p必须要是底层const p2=p3; //正确