1. ホーム
  2. c++

[解決済み] CやC++における「const static」の意味とは?

2022-03-06 05:48:07

質問

const static int foo = 42;

StackOverflowのいくつかのコードでこれを見ましたが、何をするものなのか分かりませんでした。その後、他のフォーラムで混乱した答えを見ました。私の推測では、C言語で定数を隠すために使われていると思います。 foo 他のモジュールから これは正しいのでしょうか?もしそうなら、なぜC++のコンテキストでそれを使うのでしょうか。 private ?

解決方法は?

CとC++の両方で使用できます。

ご推察の通り static の部分は、そのスコープをその コンパイル単位 . また、静的な初期化も可能です。 const は、誰にも変更させないようにコンパイラに指示するだけです。この変数は、アーキテクチャによって、dataセグメントかbssセグメントに置かれ、読み取り専用とマークされたメモリに置かれるかもしれません。

すべては、Cがこれらの変数をどう扱うか(あるいはC++が名前空間変数をどう扱うか)です。C++では static は、与えられたクラスのすべてのインスタンスで共有されます。privateであろうとなかろうと、1つの変数が複数のインスタンスで共有されることには影響しない。持つこと const を変更しようとするコードがあると、警告が表示されます。

厳密にプライベートであれば、クラスの各インスタンスは独自のバージョンを取得することになります(オプティマイザはともかく)。