作用:修饰数据或函数类型为常类型
修饰指针
1.指针内容为常量
const在*的左边 ,指针内容(*a)为常量,指针为变量。可以不进行初始化
const int* a=&b
int const *a=&b
*a=600//错 指针内容为常量,不能赋值
b=600//对 改变b的值->改变*a的值
c=600;
a=&c//对 改变a的值->改变*a的值
2.指针为常量
const位于*右边,指针(a)为常量,指针内容为变量。必须初始化
int* const a=&b
修饰成员函数
const成员函数:不改变数据成员,只能调用const成员函数
int getY() const;//const放在函数后面,const关键字在函数声明和定义中均需要
int getY() const{}
const int gety();//返回值类型为常量
在const成员函数中修改成员变量,定义成员变量时添加mutable关键字
class foo
{
public:
int incr() const{return ++number;}
private:
mutable int number;
}
const和宏定义的区别
编译器处理方式不同:const在运行时期;宏在预处理时期
类型和安全检查:const常量有数据类型因此需要类型检查;宏只有字符替换不做类型检查