const 限定符
1、const限定符可以将一个对象转换成一个常量,例如 const int a=1;此时,任何修改 a 的尝试都会导致编译错误。
2、const对象默认为文件的局部变量。
   在全局作用域里定义非const变量时,它在整个程序中都可以访问。我们看而已把一个非const变量定义在一个文件中,假设已经做了合适的生命,就可在另外的文件中使用这个变量。
   例如:
  
//file_1.cpp
int a=1;

...

//file_2.cpp
extern int a;

//ok
与其他变量不同,除非特别说明,在全局作用域生命的const变量是定义该对象的文件的局部变量,此变量只存在于那个文件中,不能被其他文件访问。例如:
//file_1.cpp
const
int a=1;


//file_2.cpp
extern int a;
 
//error
不过,通过指定const变量为extern,就可以在整个程序中访问const对象,例如:
//file_1.cpp
extern const int a=1;

//file_2.cpp
extern const int a;

//ok


3.我们知道,头文件中不能定义变量,防止被多个文件引用,从而多次定义变量。但是const 变量可以在头文件中定义,因为它在程序的文件中相当于定义了局部变量。

引用 &
引用是一种复合类型,通过在变量名前面添加&符号来定义。引用必须用与该引用同类型的对象初始化。
int a=1;
int &b=a;//ok
int &c;//error,未初始化
int &d=1;//error,所引用的必须为对象

引用是别名,引用只是它绑定对象的另一名字,作用在引用上的所有操作事实上都是作用在该引用的绑定的对象上。
b+=2;则a+=2;

const 引用
const引用是指向const对象的引用。
const int a=1;
const int &b=a;//ok,a和b都不可修改
int &c=a;//error
上例表明,试图通过修改c来修改一个const变量a是危险的,是不允许的。