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