我在C ++中使用Eckel-Thining的以下代码行
Class Obj{
static int i,j;
public:
void f() const {cout<<i++<<endl;}
void f() const {cout<<i++<<endl;}
};
int Obj::i=47;
int Obj::j=11;
现在它在Ecekl中为const成员函数编写,通过声明成员函数const,我们告诉编译器不要修改类数据。我理解在某些特定的情况下,比如可变const和显式地抛弃了这个指针的常量,我们可以废除它,但是这两个都没有发生,并且i ++和j ++正常工作。为什么会这样?
答案 0 :(得分:6)
const
仅适用于对象(this
指针为const
),允许修改static members
。
答案 1 :(得分:2)
在const成员函数中,通过const访问路径访问调用该函数的对象;因此,const成员函数不得修改对象及其非静态数据成员。
如您所见,根据c ++标准,静态数据成员不受const
保护。