表示: Delphi
C++
表示設定
const
提供:RAD Studio
カテゴリ
修飾子
構文
const <変数名> [ = <値> ]; <関数名> ( const <型>*<変数名> ;) <関数名> const;
説明
const 修飾子を使用して、変数値を変更不可にします。
プログラムで変数の値を変更できないようにするには、const 修飾子を使って変数に初期値を代入します。const 宣言後に変数に値を代入しようとすると、コンパイラ エラーとなります。
const ポインタは変更できませんが、それが指しているオブジェクトは変更できます。次に例を示します。
const float pi = 3.14; // 単独で使用されている const は int に相当します。 const maxint = 12345; // 定数ポインタ char *const str1 = "Hello, world"; // 定数文字列へのポインタ char const *str2 = "C++Builder";
上記の宣言により、以下の文はエラーになります。
pi = 3.0; // 定数に値を代入。 i = maxint++; // 定数をインクリメント。 str1 = "Hi, there!"// str1 を別の文字列のポインタに設定。
C++ プログラムでの const キーワードの使い方
C++ では const をクラスとメンバ関数にも指定できるように拡張されました。C++ クラスの定義ではメンバ関数宣言の後に const 修飾子を使用します。このメンバ関数はクラス内のデータを変更できません。
const キーワードを使って定義されたクラスは、const のメンバ関数だけを使用するようにします。const として定義されていないメンバ関数を呼び出すと、コンパイラは const オブジェクトで const ではない関数が呼び出されたという警告を出します。このような const キーワードの使い方は、C++ の安全機能です。
警告:ポインタを使用すると、次のように、間接的に const 変数を変更できます。
*(int *)&my_age = 35;
関数のパラメータ リストで、ポインタに const 修飾子を使用した場合、関数はポインタが指している変数を変更できません。例:
int printf (const char *format, ...);
printf は format 文字列を変更できません。