C ++に静的コンストラクターがない理由は何ですか?
許可されている場合は、次のように、非常に整理された方法で、その中のすべての静的メンバーを1か所で初期化します。
//illegal C++
class sample
{
public:
static int some_integer;
static std::vector<std::string> strings;
//illegal constructor!
static sample()
{
some_integer = 100;
strings.push_back("stack");
strings.push_back("overflow");
}
};
静的コンストラクターがない場合、上記のように静的ベクトルを作成し、それに値を設定することは非常に困難です。静的コンストラクターは、この問題をエレガントに解決します。非常に組織化された方法で静的メンバーを初期化できます。
では、なぜC++に静的コンストラクターがないのでしょうか。結局のところ、他の言語(たとえば、C#)には静的コンストラクターがあります!