Sam*_*rsa 5 c++ static const visual-studio-2008
如果以前曾经问过我,我道歉.我的搜索结果没有出现类似的问题.
这是一个概念性问题.根据MSDN和其他人的说法:
常量成员函数不能修改任何数据成员或调用任何非常量的成员函数
为什么我们允许从const方法访问静态成员变量?
关于const
成员函数,C++标准说明了这一点:
如果声明了成员函数
const
,则其类型为const X*
,[...]在
const
成员函数中,通过const
访问路径访问调用函数的对象; 因此,const
成员函数不得修改对象及其非静态数据成员.
所以你看到只有非静态数据成员才是成员函数'constness'的一部分.
但是,我认为更重要的是它表明理解const
成员函数发生的一个好方法是它使隐式this
指针成为指针const
.
由于不需要通过this
指针(隐式或显式)访问静态成员,因此不限制对它们的访问const
.