const 用法:
1. 在普通变量定义的前面加上const,变量就不能被重新赋值
2. const与指针的写法有点复杂:
const int *p 与 int const *p完全等价,他们修饰的是*p,也就是*p不能被重新赋值,也就是被指向的对象
int * const p则不一样,它修饰的是p,也就是说p这个指针内存的地址不能动了,但是这个地址指向的变量还可以被重新赋值。
3. const与引用:
const可以修饰引用: int x=3; const int &y=x; 这个例子中,const修饰的是y,y是不能被重新赋值的
const在类中的用法:
1. 使用const修饰类的数据成员,这样做之后,这个类一旦被初始化后,它的数据成员就不能再被改变!
2. 更复杂的是,用const修饰类的成员函数,这样做后,这个常成员函数内部,不能对数据成员进行修改!
原因在于,对于常成员函数,编译器编译的时候,它会这样认为:
也就是说它会认为函数参数中的this指针被修饰为const,那么this指针指向的数据成员就不能被改变了。
调用常成员函数应该这样写: