const成员函数
1.const 成员函数不会修改对象的状态
2.const成员函数只能访问数据成员的值,而不能修改它
const对象
1.如果把一个对象指定为const,就是告诉编译器不要修改它
2.const对象的定义
2.1const 类名 对象名(参数表);
3.const对象不能调用非const成员函数
mutable
用mutable修饰的数据成员即使在const对象或在const成员函数中都可以被修改。
#include <iostream>
using namespace std;
class Test
{
public:
Test(int x) : x_(x),outputTimes_(0)
{
}
int GetX() const
{
cout << "const GetX..." << endl;
return x_;
}
int GetX()
{
x_ = 100;
cout << "GetX..." << endl;
return x_;
}
void Output() const
{
cout << "x=" << x_ << endl;
outputTimes_++;
}
int GetOutputTimes() const
{
return outputTimes_;
}
private:
int x_;
mutable int outputTimes_;
};
int main()
{
const Test t(10);
t.GetX();
Test t2(20);
t2.GetX();
t.Output();
t.Output();
cout << t.GetOutputTimes() << endl;
return 0;
}

const汇总
1.const与常量关系,const与对象关系
const int n = 100;
class Test;
const Test t(10);
2.const与引用关系
const int& ref = n;
int& ref = n; // Error
3.const与指针关系
const int* p; // *p是常量
int *const p2; // p2是常量
const int* const p3; // *p3是常量,p3是常量
4.在类中,如果有const成员,const成员的初始化只能在构造函数初始化列表中进行
5.const修饰成员函数,表示该成员函数不能修改对象状态,也就是说只能访问数据成员,但是不能修改数据成员。