#include <iostream>
using std::cout;
using std::endl;
class Complex
{
public :
Complex() ;
void Output() const;
int GetOutputTimes() const;
private :
int m_iTimes;
};
Complex::Complex()
{
m_iTimes = 0;
}
void Complex::Output() const
{
cout << " output for test " << endl;
m_iTimes++;
}
int Complex::GetOutputTimes() const
{
return m_iTimes;
}
int main()
{
Complex complex;
cout << complex.GetOutputTimes() << endl;
complex.Output();
cout << complex.GetOutputTimes() << endl;
return 0;
}
输出:
pateo@pateo-B86N53X:~/work/study$ g++ main.cc -o main
main.cc: In member function ‘void Complex::Output() const’:
main.cc:25: error: increment of data-member ‘Complex::m_iTimes’ in read-only structure
pateo@pateo-B86N53X:~/work/study$
针对变量m_iTimes增加mutable关键字修饰
#include <iostream>
using std::cout;
using std::endl;
class Complex
{
public :
Complex() ;
void Output() const;
int GetOutputTimes() const;
private :
mutable int m_iTimes;
};
Complex::Complex()
{
m_iTimes = 0;
}
void Complex::Output() const
{
cout << " output for test " << endl;
m_iTimes++;
}
int Complex::GetOutputTimes() const
{
return m_iTimes;
}
int main()
{
Complex complex;
cout << complex.GetOutputTimes() << endl;
complex.Output();
cout << complex.GetOutputTimes() << endl;
return 0;
}
输出:
pateo@pateo-B86N53X:~/work/study$ g++ main.cc -o main
pateo@pateo-B86N53X:~/work/study$ ./main
0
output for test
1
pateo@pateo-B86N53X:~/work/study$