c++ const函数中修改类的成员变量

来源:互联网 发布:qq空间mac客户端 编辑:程序博客网 时间:2024/05/17 09:13

mutable member-variable-declaration;

This keyword can only be applied to non-static and non-const data members of a class. If a data member is declared mutable, then it is legal to assign a value to this data member from a const member function. 
上面的引自MSDN  

举个例子:
#include <iostream>
#include <iomanip>

using namespace std;

class C
{

public:
C(int i):m_Count(i){}
int incr() const//注意这里的const
{
return ++m_Count;
}
int decr() const
{
return --m_Count;
}
private:
mutable int m_Count;//你可以试着将这里的mutable去掉再编译试试
};

void main()
{
C c1(0),c2(10);
for(int tmp,i=0;i<10;i++)
{
tmp = c1.incr();
cout<<setw(tmp)<<setfill(' ')<<tmp<<endl;
tmp = c2.decr();
cout<<setw(tmp)<<setfill(' ')<<tmp<<endl;
}
}

 

用指针也可以

 #include<iostream>
using namespace std;
class A_class
{
public:
 int x;
 
 A_class()
 {
  x=0;
 }

 void f() const
 {
  int *p =(int *)&x;
  (*p)++;
  (*p)++;
  (*p)++;
  (*p)++;
  cout<< x <<endl;
 }
};
 
void main()
{

  A_class  num;
  num.f();
 
}