C++ で静的クラスを使用できるかどうか疑問に思っていました。つまり、C++ のようにクラスを static として宣言できstatic class foo
ますか? C++ で静的メンバー変数と静的メンバー関数を使用できることは知っていますが、静的クラスについてはわかりません。
編集:
クラスが静的であるとはどういう意味かを尋ねるつもりでした。
C++ で静的クラスを使用できるかどうか疑問に思っていました。つまり、C++ のようにクラスを static として宣言できstatic class foo
ますか? C++ で静的メンバー変数と静的メンバー関数を使用できることは知っていますが、静的クラスについてはわかりません。
編集:
クラスが静的であるとはどういう意味かを尋ねるつもりでした。
static
ストレージ クラス指定子です。
それが半衒学的な定義です。問題は、「静的クラス」のアイデアに正確にどのセマンティクスを付けたいかということです。ネストされたクラスには、自動的に静的なプロパティがあります。これらはクラスのプロパティであり、個々のオブジェクトではありません。外側のスコープで宣言されたクラスの静的なようなプロパティが必要な場合 (つまり、異なる翻訳単位間で 1 つの定義規則と競合しない場合)、匿名の名前空間を使用できます。
static キーワードは、それが参照するオブジェクトがプログラム全体を通して存在することを意味します。クラス定義は、オブジェクトを構築するための単なるアウトラインです。
それを念頭に置いて、名前空間を作成したり、インスタンスを 1 つだけ持つように設計されたクラスであるシングルトン オブジェクトを作成したりしたいと思うかもしれません。
いいえ、しかし、静的メソッド (およびデータ) のみでクラスを作成する場合、基本的にほぼ同じことを達成できます。C++ には静的コンストラクターの概念がないことに注意してください。
「静的クラス」で C# のものを参照している場合、C++ で同等のことは、単一のコンストラクターを作成してプライベートにし、非静的メンバーを作成しないようにすることです。
「静的クラス」でJavaのクラスを参照している場合、すべてのC++クラスは「静的」であるため、冗長になるため「静的」を追加できません。