一、整体代码
01.cpp
#include <iostream> using namespace std; class Test { public: Test(int x) : x_(x), outputTimes_(0) { } int GetX() const//不能改变变量的值 { cout<<"const GetX ..."<<endl; //x_ = 100; return x_; } int GetX()//支持重载 { cout<<"GetX ..."<<endl; return x_; } void Output() const { cout<<"x="<<x_<<endl; outputTimes_++; } int GetOutputTimes() const { return outputTimes_; } private: int x_; mutable int outputTimes_;//const定义的方法能够改变 }; int main(void) { const Test t(10);//有点类似于const int a =10;不能改变a的值,这里同样不能改变对象变量的值。 //所以只能调用const的方法,避免危险 t.GetX();//调用const的那个GetX Test t2(20); t2.GetX();//调用正常的GetX t.Output(); t.Output(); cout<<t.GetOutputTimes()<<endl; return 0; }
二、运行结果
三、解释
const Test t(10) 只能调用const 的方法
Test t(20) 既可以const方法,也能调用非const方法,如果两者都有,优先调用非const方法。