2016-09-19 16 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是這些方法中的常量。

相關問題