Const方法访问静态变量

时间:2010-11-15 18:51:04

标签: c++ visual-studio-2008 static const

如果之前有人问过,我道歉。我的搜索结果没有出现类似的问题。

这是一个概念性问题。根据{{​​3}}和其他人的说法:

  

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

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

2 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:9)

C ++标准说明了const成员函数:

  

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

     

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

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

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

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