1. 成员函数const修饰,相当于对该this指针const修饰,所以this指向的成员变量不能被修改(除mutable关键字修饰和static变量)
2. 成员const变量不能在声明的同时初始化,只能在类的构造函数中初始化(static const才可以)
3. 各种声明格式
const int a ;//a为常量值,不能被改变
int const a ;//如1,这种情况与修饰符的位置无关
const int *a ;//指针可变,指针指向的内容不可变
int* const a ;//指针不可变,指针指向的内容可变
int const* const a ;//指针和指针指向的内容均不可被改变
3. define声明常量相对const有很多缺点,声明定义常量用const更好,可避免类型检查等
4. typedef void* VP(typedef与define不一样,前者定义一个数据类型,后者只是一个别名用于替换),VP变成一个修饰符,例如const VP ptr就不能被替换成const void* ptr,使用VP时相当于char*为一个整体,表示的是这个指针只读,不能被修改,而指向的内容可以被修改,VP const ptr一样。
5. 函数参数用const修饰,避免传进的参数被修改