2016-09-19 63 views
-1
class StatDemo 
{ 
} ; 
private: 
static int x; 
int y; 
public: 
void setx(int a) const { x = a; } 
void sety(int b) const { y = b; } 
int getx() {return x; } 
int gety() {return y; } 

当成员变量被函数改变时,const的用法是什么?当函数改变成员变量时,给定函数中const的用法是什么?

+1

“什么是const的使用...”导致编译器错误? – songyuanyao

+0

看起来你错误地让setter为const,而getters为非const。它应该是相反的。这些东西都应该放在类的定义里面,而不是放在后面。 – paddy

回答

0

方法未标记const对象(或ref或指向const对象的指针)不能被调用。

StatDemo sd; 
StatDemo const & sdr = sd; 
sdr.get(x); // error because getx isn't marked const 

然而,这意味着所有的方法中访问的数据成员标记constconst,所以你不能改变(不搞小动作)。

这就是为什么你setxsety不会编译 - xy是这些方法中的常量。