常函数
- 成员函数后加const后我们称这个函数为常函数
- 常函数内不可以修改成员属性
- 成员属性声明时加关键字mutable后,在常函数中依然可以修改
在成员函数后面加const,修饰得是this指向,让指针指向的值也不可以修改
class Perosn
{
public :
// const Person * const this;
void showPerson() const
{
//this->ma = 100; 错误
this->mb = 100;
//this指针的本质 是指针常量 指针的指向是不可以修改的
//this = NULL; 错误 已经指向p,不能再指向空
}
void func()
{
//普通函数可以修改变量
ma = 100;
}
int ma;
mutable int mb; // 特殊变量 ,即使在常函数中,也可以修改 ,加上mutable即可.
};
void test01()
{
Person p;
p.showPerosn();
}
常对象
*声明对象前加const称该对象为常对象
*常对象只能调用常函数
void test02()
{
const Person p; //常对象
// 错误 p.ma = 100;
p.mb = 100; //mb特殊值,常对象下可以修改
}
常对象只能调用常函数
void test03()
{
p.showPerosn();
// 错误 p.func();
//常对象不可以调用普通成员函数,因为普通成员函数可以修改属性
}