constメンバ関数が欲しい

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メンバ関数はとてもありがたい機能なので、他の言語でも実装してもらいたいものです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です