如果之前询问过,我表示歉意。我的搜索结果没有提出类似的问题。访问静态变量的Const方法
这是一个概念性问题。据MSDN和其他人也:
常量成员函数不能修改任何数据成员或调用不恒定的任何成员函数
我们为什么然后被允许访问的静态成员变量一个const方法?
如果之前询问过,我表示歉意。我的搜索结果没有提出类似的问题。访问静态变量的Const方法
这是一个概念性问题。据MSDN和其他人也:
常量成员函数不能修改任何数据成员或调用不恒定的任何成员函数
我们为什么然后被允许访问的静态成员变量一个const方法?
C++标准说,这大约const
成员函数:
如果该成员函数被声明
const
,这种类型是const X*
,[...]在
const
成员函数,通过const
访问路径访问调用该函数的对象;因此,const
成员函数不得修改该对象及其非静态数据成员。
所以你看到只有非静态数据成员是成员函数的'常量'的一部分。
但是,我认为,更重要的是它表明一个很好的方式,以了解发生了什么事情与const
成员函数是,它使得隐含this
指针的指针const
。
由于静态成员不需要通过this
指针访问(隐式或显式),因此对它们的访问不是const
限定的。
非常感谢您的回复。经过一番思考,我决定检查你的答案是正确的,因为它更详细地解释了,没有任何疑问,尤其是部分:_“..了解正在发生什么的好方法...” – Samaursa 2010-11-23 00:05:55
如果你只是读取成员变量,那么你没有改变它们,不违反const要求吗? – Jay 2010-11-15 19:01:52
@Jay我可以改变它,不只是读它 – Samaursa 2010-11-15 19:48:11