类中带 const 关键字的函数,叫常函数。
常函数,class 中的成员函数,承诺在函数内不会修改class 的任何成员变量,如果在常函数中修改类中的变量,则会编译报错。
但是,加 mutable 修饰的变量,常函数允许修改。
如下代码示例:
// person.hpp
#include <string>
using namespace std;
namespace MAN
{
class person
{
public:
mutable string name; // mutable 修饰的变量,常函数也可以改
bool male; // 没用 mutable 修饰的变量,常函数不可修改
person(){};
person(int myage);
void AgeAdd1(void);
int AgeGet(void) const; //常函数
private:
mutable int age; // mutable 修饰的变量,常函数也可以改
};
} // end of namespace MAN
// person.cpp
// 本函数只是读取class的成员变量,并不修改,所以可以是常函数
int MAN::person::AgeGet(void) const
{
age++;
name = "ddd";
return this->age;
}