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();
}
本文通过两个示例详细介绍了C++中mutable关键字的使用方法及其特性。第一个示例展示了如何在常量成员函数中修改mutable变量,第二个示例则通过指针操作mutable变量。文章解释了mutable关键字仅能应用于类的非静态非const数据成员,并强调了mutable变量可以在const成员函数中被修改。

1万+

被折叠的 条评论
为什么被折叠?



