常函数与常对象
常函数 void func() const {}
常函数 修饰是 this 指针 const Type* const this
常含数 不能修改 this 指针指向的值
常对象 在对象前 加入 const 修饰 const Person p1
常对象 不可以调用普通的成员函数
常对象 可以调用常含数
用 mutable 修饰的关键字是在常函数中可以修改的。
class Person {
public:
Person() {
/*
* 构造中修改属性
* this 永远执行本体
* Person* const this;
*/
this->m_A = 0;
this->m_B = 0;
}
void showInfo() const {//常函数:不允许修改指针指向的值
//this->m_A = 10;
this->m_B = 10;
//const Person* const this
cout << this->m_A << endl;
cout << this->m_B << endl;
}
void show2() const {
}
int m_A;
mutable int m_B;//就算是常函数 我仍执意修改
};
void test01() {
//常函数
Person p1;
p1.showInfo();
//常对象:不允许修改属性
//常对象 不可以调用普通成员函数
//常对象 可以调用常含数
const Person p2;
//p2.m_A = 10;
p2.show2();
}