在类中,被const定义的属性,无论如何都不能被修改,并且要在类里事先声明或在默认构造函数内声明。
在类中,被const修饰的函数,函数体内不能修改属性,但如果属性被mutable修饰,则不影响:
class Student {
public:
int id;
mutable int age;
const int hands = 2; // 事先声明
Student() : hands(2) { // 默认构造函数内声明
id = 1;
age = 100;
}
void modify() const {
id = 100; // id不可以改,但age因为是mutable的,突破了const的限制,所以可以改
age = 18;
}
};
3. const修饰指针时:
int a = 1;
const int* c = &a; // 锁变量,地址可修改
int* const d = &a; // 锁地址,变量内容可修改
const int* const e = &a; // 两个都锁
4. const修饰引用符号&时:
int a = 1;
const int& f = a;
f = 2; // 不可以修改
5. const修饰对象的引用时,和上面一样,如果成员是const,必不能改,如果是mutable或默认,则可以修改。