C++のconstメンバ関数は、メンバ変数が変更されないことを保証する関数です。
constメンバ関数を使えば、プログラマの意図しないオブジェクトの変更がなくなります。
constメンバ関数の宣言は次のようになります。
struct TSample
{
//普通のメンバ関数
void Bar();
//constメンバ関数
void Baz() const;
};
constなオブジェクトのconstでないメンバ関数を呼ぶとコンパイルエラーになります。
void Func1(const TSample& Sample) { Sample.Bar(); }
//=> コンパイル失敗
//=> E2522 const オブジェクトに対して非 const 関数 TSample::Bar() が呼び出された
constなオブジェクトのconstメンバ関数は呼ぶことができます。
void Func2(const TSample& Sample) { Sample.Baz(); }
//=>コンパイル成功
プログラマの意図しないオブジェクトの変更がなくなり、思わぬバグを未然に防ぐことができます。
とくに複数人のプロジェクトや、他人が作ったコードを使用するときはとても役に立ちます。
Java・C#・Delphiには、constメンバ関数がないようです。
constメンバ関数はとてもありがたい機能なので、他の言語でも実装してもらいたいものです。