如果之前有人问过,我道歉。我的搜索结果没有出现类似的问题。
这是一个概念性问题。根据{{3}}和其他人的说法:
常量成员函数不能修改任何数据成员或调用任何不常数的成员函数
为什么我们允许从const方法访问静态成员变量?
答案 0 :(得分:13)
因为它们不是对象的一部分。
答案 1 :(得分:9)
C ++标准说明了const
成员函数:
如果成员函数被声明为
const
,则其类型为const X*
,[...]在
const
成员函数中,通过const
访问路径访问调用该函数的对象;因此,const
成员函数不得修改对象及其非静态数据成员。
所以你看到只有非静态数据成员才是成员函数'constness'的一部分。
但是,我认为更重要的是,它表明理解const
成员函数的一个好方法是它使隐式this
指针成为const
的指针。
由于不需要通过this
指针(隐式或显式)访问静态成员,因此访问它们不是const
限定的。