staticの使い方6〜C++における定数宣言〜


目次に戻る


約1週間にわたって続いたstatic関係の小技もとりあえず今日が最後になります。最後に 紹介するテクニックはC++における定数宣言の仕方です。
 
C言語では定数値をプログラムに埋め込む場合は #define をつかって定義しました 。
 
/* C言語における定数宣言の例 */
#define   MAX_VALUE    1000
#define   MIN_VALUE    1
C++になり、型のチェックが厳しくなったため #define で定義した定数のように「型不定」 のものはできれば使わないようにしよう、となりました。C++の参考書等を読むと定数値 を扱う場合は const で変数を定義して使うように、と書いてあると思います。
 
// C++における定数宣言の例( 駄目な例)
const int MAX_VALUE = 1000;
const int MIN_VALUE = 1;
ところがこれには欠点があります。上のような定義の仕方では、ヘッダファイル内に定数 値を定義できないのです。これは、constで宣言した定数値は値の変更できないグローバ ル変数と同じ扱いである為、名称の衝突が起こるからだ。
そこで、C++で定数値を使いたい場合は次のように宣言の先頭にstaticをつけると よい。
 
// C++における定数宣言の例
static const int MAX_VALUE = 1000;
static const int MIN_VALUE = 1;
一口メモ
const を使って定数値を宣言すると定数値を使うときに変数 アクセスになるため実行速度が落ちると心配する方がいますが、その心配は無用です。 よほど頭の悪いコンパイラで無い限り、コンパイル時に最適化が行われ #define で定義したマクロと同じ処理速度が得られます。


目次に戻る