プログラミング言語には「値を変えたくないとき」に使える便利な仕組みがあります。その代表がC++のconst
です。しかし、C++では使い方に注意が必要で、特に初期化のルールを守らないとエラーが出ます。
この記事では、C++のconst
の基本的な使い方、注意点、さらにJavaではなぜconst
が存在しないのかについて解説します。
1. C++のconst
とは?
const
は「定数」を作るためのキーワードです。一度値を設定すると、プログラム中でその値を変更することができません。
基本的な使い方
const
を使うときは、宣言と初期化を同時に行う必要があります。
const int x = 10; // OK: 宣言と初期化を同時に実行
この場合、x
は常に10
のままで変更できません。
エラーになる例
初期化を2行に分けるとエラーが発生します。
const int x; // エラー: 初期化されていない
x = 10; // エラー: 再代入できない
なぜエラーになるのでしょうか? それは、C++ではconst
変数を一度初期化すると、その後は変更が許されないというルールがあるためです。したがって、const
変数は宣言と同時に初期化する必要があります。
2. 初期化時の注意点
const
変数の初期化について、もう少し詳しく見てみましょう。
ローカル変数の場合
ローカルスコープ(関数内など)でのconst
は、以下のように使う必要があります。
void example() {
const int a = 5; // OK: 初期化されている
// a = 10; // エラー: `const`変数は変更できない
}
グローバル変数の場合
グローバルスコープでは、const
変数を初期化せずに宣言するとエラーになります。
const int b; // エラー: 初期化が必要
これは、C++ではconst
が「ファイルスコープで静的な値」として扱われるためです。
4. Javaにconst
はない?
C++に慣れた方は、「Javaではconst
はどう使うの?」と思うかもしれません。しかし、Javaにはconst
はありません。
代わりにfinal
を使う
Javaでは、final
がC++のconst
に相当します。
javaコードをコピーするfinal int x = 10; // 一度初期化すると値を変更できない
// x = 20; // エラー: `final`変数は再代入できない
なぜJavaにはconst
がないのか?
Javaの設計段階では、C++にある複雑な機能を減らし、シンプルさを追求しました。その一環でconst
の代わりにfinal
を採用し、さらに明確なルールを設けたのです。
実はJavaにはconst
というキーワード自体が予約されていますが、使用されていません。将来の拡張のために予約されているだけです。
5. 実務での活用例
C++の場合
定数を管理するのに便利です。たとえば、円周率や物理定数などをコードに埋め込む場合const
Javaの場合
不変の値や設定値を扱うとき、final
を使います。
6. まとめ
- C++では、
const
は宣言と同時に初期化する必要があります。 - 初期化を忘れるとエラーになるため、使う際は注意しましょう。
- Javaには
const
はなく、代わりにfinal
を使用します。
C++とJava、それぞれの違いを理解して上手に使い分けてみてください!
コメント