C++メンバー関数のconst修飾子

2228 ワード

C++ソースコードの中にはconst修飾の関数がよく見られますが、ここのconstは置く位置に関係なく、つまり次の3つの書き方が等価です.ただ、通常は1つ目の書き方を使って、関数を書いてテストすることができます.ここのconstは関数の位置に書いてありますが、実は隠しているthisポインタを修飾するために使われています.このときthisポインタは対象を指しているので、つまりthisが指すオブジェクトは修正できません
void OpVar(int a, int b) const    //1
void const OpVar(int a, int b)     //2
const void OpVar(int a, int b)    //3
// const          
// const     ?
// const       
// const    this         ,       ,     const
void OpVar(int a, int b) const // void OpVar(const Test *const this, int a, int b) const
{
	// a = 100; //   
	// this->a = 100; //   this               
}