const关键字是“constant”的缩写,意为永恒不变的,以下列举const的作用:
1.const变量
const int a =1;
int const a =1;
为防止定义的变量被修改,可用const修饰变量,const放在前面或后面均可,效果等同。const变量即为常量,const变量定义的时候必须初始化。const变量与符号常量的区别(1)符号常量由预编译器处理,const变量由变量处理(2)在编译是符号常量已经不存在了,而const变量依然存在(3)符号常量的作用域从定义位置开始,到源文件结束,而const变量与一般变量一样。
指针常量:const int * a=&b;// 指针可变,指针所指内容不可变
指向常量的常指针 const int const *a=&b; //指针不可变,指针所指内容不可变
2.const指针
int * const a =&b;
const (int *) a=&b;
为防止定义的指针被修改,可用const修饰指针。
a=&c; //错误,a为常指针,不可修改
*a=c; //正确,指针不可变,指针所指内容可变
3.const参数
为防止参数被改变,可用const 修饰参数,作为输入参数,输出参数严禁用const修饰。指针或引用做函数参数时,函数内部对其进行修改时可影响输入值,若不想输入值被改变,可用const修饰。
4.const成员函数
int get()const;
凡不修改类内数据成员的函数均可定义为const成员函数,声明处const放在函数名后,“;”前,定义处const放在函数名与函数体之间。此处const修饰的是this指针指向的对象,相当于限定对象为常对象。
5.const对象
为防止对象内部数据成员被改变,可用const修饰,const对象只能调用const函数,非const函数可能会改变数据成员,构造函数和析构函数除外,构造函数和析构函数均不定义为const类型,但是const对象要引用,可引用静态函数。
1.const变量
const int a =1;
int const a =1;
为防止定义的变量被修改,可用const修饰变量,const放在前面或后面均可,效果等同。const变量即为常量,const变量定义的时候必须初始化。const变量与符号常量的区别(1)符号常量由预编译器处理,const变量由变量处理(2)在编译是符号常量已经不存在了,而const变量依然存在(3)符号常量的作用域从定义位置开始,到源文件结束,而const变量与一般变量一样。
指针常量:const int * a=&b;// 指针可变,指针所指内容不可变
指向常量的常指针 const int const *a=&b; //指针不可变,指针所指内容不可变
2.const指针
int * const a =&b;
const (int *) a=&b;
为防止定义的指针被修改,可用const修饰指针。
a=&c; //错误,a为常指针,不可修改
*a=c; //正确,指针不可变,指针所指内容可变
3.const参数
为防止参数被改变,可用const 修饰参数,作为输入参数,输出参数严禁用const修饰。指针或引用做函数参数时,函数内部对其进行修改时可影响输入值,若不想输入值被改变,可用const修饰。
4.const成员函数
int get()const;
凡不修改类内数据成员的函数均可定义为const成员函数,声明处const放在函数名后,“;”前,定义处const放在函数名与函数体之间。此处const修饰的是this指针指向的对象,相当于限定对象为常对象。
5.const对象
为防止对象内部数据成员被改变,可用const修饰,const对象只能调用const函数,非const函数可能会改变数据成员,构造函数和析构函数除外,构造函数和析构函数均不定义为const类型,但是const对象要引用,可引用静态函数。