c++ mutable

来源:互联网 发布:三菱编程手册 编辑:程序博客网 时间:2024/06/11 19:34
#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 mainmain.cc: In member function ‘void Complex::Output() const’:main.cc:25: error: increment of data-member ‘Complex::m_iTimes’ in read-only structurepateo@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 mainpateo@pateo-B86N53X:~/work/study$ ./main0 output for test 1pateo@pateo-B86N53X:~/work/study$ 


原创粉丝点击