const関数

C++メンバ関数で、constのあるのとないのが二つ宣言されていて、中身は同じだったりする。

inline float GetLength(void) const;
inline float GetLength(void);

これってどういう意図があるのかよくわからん。


Effective C++に理由が書いてあった。
上の例は間違いかも。


■結論?
クラスのメンバ関数がメンバ変数の参照やポインタを返す時に、
thisがconstの場合はそのリターン値もconstにしたい、
そうでない場合はそのリターン値はconstにしたくない。
ということで、こんな感じになるのかな。

public:
float* Get() { return mValue; } // thisがconstじゃない時こっちがよばれる
const float* Get() const { return mValue; } // thisがconstの時こっちがよばれる

private:
float mValue[4];