[解決済み] C++のセマンティクス、`static const` と `const` の比較
2022-04-25 21:04:03
質問
C++では、具体的に、例えば、どのような意味での違いがあるのでしょうか。
static const int x = 0 ;
そして
const int x = 0 ;
ともに
static
をリンクとストレージクラス指定子として使用することができます(つまり、関数の内側と外側の両方)。
どのように解決するのですか?
ファイルスコープでは、C++と変わりません。
const
は内部リンクをデフォルトとし、すべてのグローバル変数が静的寿命を持つようにします。 しかし、最初の変形はCでも同じ動作をしているので、それを利用するのは良い理由かもしれません。
関数内では、2番目のバージョンはパラメータから計算することができます。CやC++では、他のいくつかの言語が要求するようなコンパイル時の定数である必要はありません。
クラス内では、基本的に関数と同じです。インスタンス
const
の値を計算することができます。
ctor-initializer-list
. A
static const
はスタートアップの初期化時に設定され、プログラムの残りの部分は変更されません。 (注)
static
宣言と初期化が分離されているため、少し見た目が異なります)。
C++で思い出してください。
const
というのは
読み取り専用
ではなく
定数
. もし、ポインタから
const
の場合、あなたが見ていない間にプログラムの他の部分がその値を変更する可能性があります。 もし変数が
const
初期化した後は誰も変更できませんが、それでも初期化は恣意的に複雑にすることができます。
関連
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] ムーブセマンティクスとは何ですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] 家系図ソフトのサイクル
-
[解決済み] template "と "typename "キーワードはどこに、なぜ入れなければならないのですか?
-
[解決済み] C++11の'typedef'と'using'の違いは何ですか?
-
[解決済み] スタティック・ライブラリとシェアード・ライブラリの違い?
-
[解決済み] ダイナミックライブラリとスタティックライブラリの使い分け
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] インライン変数の仕組みは?
-
[解決済み] CとC++における「const static」の意味とは?