const修饰指针的情况
小窍门:看const位于*的哪里
如果const位于*的左侧,则const是修饰指针所指向的变量。
如果const位于*的右侧,则const是修饰指针本身。
int b = 500;
const int* a = &b;//指针所指向的内容为常量,不允许更改内容
int const *a = &b;//同上
int* const a = &b;//指针的指向不能更改,定义时必须初始化
const int* const a = &b;//都是常量
对于前两种情况,内容不可更改是指不能通过指针来更改,比如*a=600;就是错误的,但是如果想更改 *a的值也不是不可以,比如可以更改b的值,或者改变a的指向,让它指向一个等于600的c变量。
那么const成员函数是什么?
类的成员函数中,const成员函数是不改变类的数据成员的一类函数,也就是只读函数。
使用方法:
//声明
int gety() const;
//在类外定义时也要加上const
int 类名::gety() const
{}
注意:如果把const放在函数声明前,const修饰的是函数返回值。
const与#define相比有什么不同?
1、const常量有数据类型,而宏常量没有数据类型
2、const在编译时进行了安全检查,而宏常量只是简单地字符替换。