参照によってメンバー変数を返します。
int& ColPeekHeight(){ return _colPeekFaceUpHeight; }
クラスを適切なものにするには、関数の const バージョンを定義します。
const int& ColPeekHeight() const { return _colPeekFaceUpHeight; }
const
2 つの sで関数を宣言すると
オブジェクトを変更することを期待していない関数にオブジェクトを渡したい場合。次の例を見てください。
struct myclass
{
int x;
int& return_x() { return x; }
const int& return_x() const { return x; }
};
void fun(const myclass& obj);
int main()
{
myclass o;
o.return_x() = 5;
fun(o);
}
void fun(const myclass& obj)
{
obj.return_x() = 5; // compile-error, a const object can't be modified
std::cout << obj.return_x(); // OK, No one is trying to modify obj
}
オブジェクトを関数に渡す場合、実際には常にそれらを変更したくない場合があります。したがって、この種の変更から身を守るためconst
に、メンバー関数のバージョンを宣言します。すべてのメンバー関数に 2 つのバージョンがある必要はありません。それはそれ自体の機能に依存します、それは本質的に機能を変更しています:)
1 つ目const
は、戻り値が定数であることを示しています。2 つ目const
は、メンバー関数がオブジェクトを変更return_x
しないことを示しています (読み取り専用)。