在类中,被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或默认,则可以修改。