const 变量
const 修饰的对象转换为一个常量,不可被修改。
同一工程中const int val = 8全局常量val只作用在本文件中,即使另一文件用extern const int val声明也不行,需在定义时使用extern const int val = 8其他文件才可extern声明访问。
const 指针
const int *a1;//表示p1指向的整型不可修改
int * const a3 = &a;//表示a3指针不可修改,只能指向a的地址;const在 * 号的右边
const 引用
当引用的对象是const对象时,引用也必须是const
const int val = 1024;
const int &refVal = val;
const 函数参数
传递过来的参数在函数内不可以改变,与上面修饰变量时的性质一样。
const 函数返回值
形如:
const int * fun1( ){ }
const int fun2( ){ }
如果返回const data,non-const pointer,返回值也必须赋给const data,non-const pointer。因为指针指向的数据是常量不能修改。
如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。所以,对于值传递来说,加const没有太多意义。