const

提供: RAD Studio
移動先: 案内検索

キーワード(アルファベット順):インデックス への移動


カテゴリ

修飾子

構文

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 は書式文字列を変更できません。

関連項目