Const方法访问静态变量

Sam*_*rsa 5 c++ static const visual-studio-2008

如果以前曾经问过我,我道歉.我的搜索结果没有出现类似的问题.

这是一个概念性问题.根据MSDN和其他人的说法:

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

为什么我们允许从const方法访问静态成员变量?

Edw*_*nge 13

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


Mic*_*urr 9

关于const成员函数,C++标准说明了这一点:

如果声明了成员函数const,则其类型为const X*,[...]

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

所以你看到只有非静态数据成员才是成员函数'constness'的一部分.

但是,我认为更重要的是它表明理解const成员函数发生的一个好方法是它使隐式this指针成为指针const.

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