1.常对象只能调用常成员函数,成员变量都可访问。
2.常成员函数不能修改成员变量,但是成员变量前加mutable变成可修改;
常成员函数不能调用普通成员函数,可以调用常成员函数。
3.常成员函数与普通成员函数在没有形参时也可以重载,因为有一个this指针
#include <iostream>
using namespace std;
#include <string>
class Person
{
public:
int m_Age;
mutable string m_Name;//在常函数中可修改
Person(int age, string name) :m_Age(age), m_Name(name)
{
cout << "构造函数的调用" << endl;
}
void correct(string name) const ;//常函数,一般不能修改成员
void show();//普通函数
};
void Person::show()
{
cout << "普通函数成功被调用了" << endl;
}
void Person::correct(string name) const
{
this->m_Name = name;
cout << "m_Age=" << m_Age << endl;
cout << "m_Name=" << m_Name << endl;
//show();错的
}
int main()
{
Person p1(18, "我是路人甲");
p1.correct("甲改名了");
const Person p2(18, "我是乙");
p2.correct("乙改名了");
return 0;
}
运行结果:
构造函数的调用
m_Age=18
m_Name=甲改名了
构造函数的调用
m_Age=18
m_Name=乙改名了