const的作用:
- 便于进行类型检查。const用于定义常量:const定义的常量编译器可以对其进行数据静态类型安全检查;
- 保护被修饰的东西,防止意外的修改
- const修饰函数形式参数 void fun(A const& a); 可以提高效率 引用传递不需要产生临时变量
- 提高了效率。编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
- 可以节省空间,避免不必要的内存分配。const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝
重点
const int x = 3; // x为整型常量 const修饰x
const int a1 = &b; // const在int左侧 修饰指针所指向的变量,即指针指向常量(常量指针)
int* const a2 = &b; // const在int*右侧,修饰指针本身,即指针本身为常量 (指针常量)
const位于号的左侧,则const就是用来修饰指针所指向的变量
const位于的右侧,const就是修饰指针本身,即指针本身是常量。