要保证一个方法不会修改数据成员,具体方法就是将方法本身用const关键字来标记。
将一个方法标记为const,这表明了与客户代码的一个合约,即保证你不会在此方法中尝试修改对象的内部值。如果把一个方法声明为const,但是在方法中修改了数据成员,编译器会报错。而且不能把static方法声明为const,因为静态方法根本没有相应的类实例,因此他们不可能修改内部成员数据。
有时候你在编写一个逻辑上的const方法,但实际上它会修改对象的数据成员。则将该对象数据成员声明为mutable类型。
class test
{
public:
void test();
void test1() const;
private:
mutable int numAccess;
};
void test::test()
{
numAccess = 1;
}
void test::test1() const
{
numAccess = 5;
}