1、文件作用域-const修饰变量默认为文件局部变量
注意:非const变量默认为extern。要使const变量能够在其他文件中访问,必须在文件中显式地指定它为extern。
1) 未被const修饰的变量在不同文件的访问
可以看到是能够默认不加const是可以正常访问的
2) 被const修饰的变量在不同文件的访问
加了const之后,外部文件访问会报错
3) 被const修饰的变量添加extern在不同文件的访问
可以正常输出
2、定义常量
b 为常量,不可更改!
i 为常量,必须进行初始化!(因为常量在定义后就不能被修改,所以定义时必须初始化。)
3、const 指针
两种解读方式:
1、与指针相关的const有四种:
const char * a; // 指向const对象的指针或者说指向常量的指针。
char const * a; // 同上
char * const a; // 指向类型对象的const指针。或者说常指针、const指针。
const char * const a; // 指向const对象的const指针。
如果const位于的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于的右侧,const就是修饰指针本身,即指针本身是常量。
2、利用英文从右边往左边读,并且以to为分界,to之前为描述指针的特性,to之后为描述目标的特性
const char * p; //p is a pointer to const char
char const * p; //同上
char * const p; //p is a const pointer to char
const char * const p; //p is a const pointer to const char
当指针被加上const特性,则指针不可改变指向的地址
当指向的目标特性为char,则内容可以透过指针被修改,如: *char=‘y’;
当指向的目标特性为const char,则内容不可透过指针修改
3.1 指向常量的指针
3.2 常指针
3.3 指向常量的常指针
4、函数中使用const
4.1 修饰函数
4.2 修饰函数参数
5、类中使用const
在一个类中,任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改 数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。
使用const关键字进行说明的成员函数,称为常成员函数。只有常成员函数才有资格操作常量或常对象,没有使用const关键字进行说明的成员函数不能用来操作常对象。
5.1 对于类中的const成员变量必须通过初始化列表进行初始化