const

提供: Appmethod Topics
移動先: 案内検索

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


カテゴリ

修飾子

構文

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

関連項目