1、常函数(限定只读状态):成员函数后加const,声明函数的格式如下:
- 类型说明符 函数名(函数表) const;
- 常函数内不可以修改成员属性;
- 成员函数声明时加关键字 mutable后,在常函数中依然可以修改;
class Person { public: //this指针的本质 是指针常量 指针的指向是不可以修改的 //在成员函数+const,等于给指针this加const // const Person * const this; // 在成员函数后面加const,修饰的是this指向,让指针指向的值也不可以修改 void showPerson() const { this->m_B = 100; this->m_A=100;//错误不能改变数据成员 //this=NULL;//this指针不可以修改指针的指向的 } int m_A; mutable int m_B;//特殊变量,即使在常函数中,也可以修改这个值,加上关键字mutable };
2、常对象:常对象必须进行初始化,而且不能被更新
- const 类型说明符 对象名;
- 常对象只能调用常函数;
void test02() { const Person p;//在对象前加const,变成常对象 //p.m_A = 100; p.m_B = 100;//m_B是特殊值,在常对象下也可以修改 //常对象只能调用常函数 //p.fun();//常对象 不可以调用普通成员函数,因为普通成员函数可以修改属性 p.showPerson();//调用常成员 }