1、常函数
常函数无法修改成员变量,除非这个成员变量用mutable修饰了。
#include <iostream>
using namespace std;
class Person{
public:
void change() const
{
//m_a = 100; // 常函数无法修改成员变量
m_b = 100; // 除非这个成员变量用mutable修饰了
}
int m_a;
mutable int m_b;
};
void test(){
Person p;
p.change();
}
int main() {
test();
return 0;
}
2、常对象
常对象无法修改成员变量,除非成员变量加了mutable修饰。常对象无法调用非常函数。
#include <iostream>
using namespace std;
class Person{
public:
Person(){}
void change() const{}
void func(){}
int m_a;
mutable int m_b;
};
void test(){
const Person p1;
p1.change();
//p1.m_a = 100; // 常对象无法修改成员变量
p1.m_b = 100; // 除非成员变量加了mutable修饰
//p1.func(); // 常对象无法调用非常函数
}
int main() {
test();
return 0;
}