const限定符
编译器会找到所有const对象,将常量值做替换。
作用域
- 默认情况下,const只在本文件内有效,因为这样编译器在做替换时才能访问到初始值,因此每个文件都必须要有定义。而为了避免重命名,const对象只在本文件内有效;
- 如果想要在多文件内共享变量,则用extern限定;
引用
1 | const int a = 1024; |
常量引用非常量,只是不能通过该常量去修改非常量的值;但如果有其他途径修改非常量的值也是可以的。
指针
- 要想存放常量的地址,只能使用指向常量的指针;
- 但指向常量的指针不一定指向常量,跟引用一样,可以通过其它方式修改指向的值;
1 | int errNum = 0; |
函数中使用const
函数参数
1 | void func(const int var);//无意义,传过来的参数不可以改变,但var本身就是实参; |
函数返回值
1 | const int fun1();//无意义 |
跟参数的用法基本相同,除了重载运算符,其它情况下不建议将返回值设为const,因为这样对象就不能对成员进行赋值操作;