const
カテゴリ
構文
const <variable name> [ = <value> ]; <function name> ( const <type>*<variable name> ;) <function name> const;
説明
const 修飾子を使用して、変数値を変更不可にします。
プログラムで変数の値を変更できないようにするには、const 修飾子を使って変数に初期値を代入します。 const 宣言後に変数に値を代入しようとすると、コンパイラ エラーとなります。
const ポインタは変更できませんが、それが指しているオブジェクトは変更できます。 次に例を示します。
const float pi = 3.14; // When used by itself, const is equivalent to int. const maxint = 12345; // A constant pointer char *const str1 = "Hello, world"; // A pointer to a constant character string. char const *str2 = "C++Builder";
上記の宣言により、以下のステートメントはエラーになります。
pi = 3.0; // Assigns a value to a const. i = maxint++; // Increments a const. str1 = "Hi, there!" // Points str1 to something else.
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 は書式文字列を変更できません。