2008年8月14日木曜日

参照やポインタを返すメソッド作成時の注意点


C++において参照やポインタを返すメソッドは基本的にはconstを付けて作成する。
メソッドより取得した参照、ポインタに対して変更を許す場合には、constを付けた
メソッドと付けていないメソッドを両方用意する。
つまり、以下のような例において、const int &getY() constメソッドを用意しないと
コンパイルで失敗する。(y.getY()でエラーとなる)


#include
class YY {
protected:
int y;
public:
YY() {
y = 123;
}
int &getY() {
return y;
}
const int &getY() const{
return y;
}

};


int main() {
const YY y;
YY y2;
y2.getY() = 134;
printf("%i %i\n",y.getY(),y2.getY());
return 0;
}