// Globals.hppで
const int SINE_MIN = 0; // only CONSTANT
const int SINE_MAX = 1; // only CONSTANT
static const int COS_MIN = 1; // STATIC CONSTANT
static const int COS_MAX = 0; // STATIC CONSTANT
静的定数と静的変数の違いは何ですか?
同じ変数がクラス内で宣言されている場合。
class SomeClass
{
const int SINE_MIN = 0; // only CONSTANT
const int SINE_MAX = 1; // only CONSTANT
static const int COS_MIN = 1; // STATIC CONSTANT
static const int COS_MAX = 0; // STATIC CONSTAN
}
実行時に値を次のように設定したい COS_MAX = getCosMaxFromFile()
それ以降は変更しないでください Const
.
回答:
回答№1は2まず、あなたが何かを宣言すれば const
それはあなたがそれを変更することができないことを意味します。だからあなたは実行時にそれに割り当てることはできませんが、初期化であなたの関数を呼び出すことはできます:
static const int COS_MAX = getCosMaxFromFile();
今度は static
また、static
変数、それは依存する どこで 変数が定義されている:ファイルグローバルスコープまたは関数ローカルスコープで定義されているかどうか。ファイルグローバルスコープであれば static
変数は現在のバージョンでのみ使用可能です 翻訳単位 (つまり、そのソースファイル内のみ)。それが関数ローカル変数であれば、a static
変数は他の(静的でない)ローカル変数のような呼び出し間でその値を緩和しません。
あなたはグローバル static
ヘッダファイルに定義された変数ヘッダーファイルを含むすべてのソースファイルにはその変数が定義されます。変数が各翻訳単位の外側に見えないので、リンカーのエラーを引き起こしませんでした。