2010-11-15 190 views
5

如果之前询问过,我表示歉意。我的搜索结果没有提出类似的问题。访问静态变量的Const方法

这是一个概念性问题。据MSDN和其他人也:

常量成员函数不能修改任何数据成员或调用不恒定的任何成员函数

我们为什么然后被允许访问的静态成员变量一个const方法?

+0

如果你只是读取成员变量,那么你没有改变它们,不违反const要求吗? – Jay 2010-11-15 19:01:52

+0

@Jay我可以改变它,不只是读它 – Samaursa 2010-11-15 19:48:11

回答

9

C++标准说,这大约const成员函数:

如果该成员函数被声明const,这种类型是const X*,[...]

const成员函数,通过const访问路径访问调用该函数的对象;因此,const成员函数不得修改该对象及其非静态数据成员。

所以你看到只有非静态数据成员是成员函数的'常量'的一部分。

但是,我认为,更重要的是它表明一个很好的方式,以了解发生了什么事情与const成员函数是,它使得隐含this指针的指针const

由于静态成员不需要通过this指针访问(隐式或显式),因此对它们的访问不是const限定的。

+1

非常感谢您的回复。经过一番思考,我决定检查你的答案是正确的,因为它更详细地解释了,没有任何疑问,尤其是部分:_“..了解正在发生什么的好方法...” – Samaursa 2010-11-23 00:05:55

13

因为它们不是对象的一部分。

+1

简单,但太重要了! – thecoshman 2010-11-15 19:03:47