В чем причина отсутствия статического конструктора в С++?
Если бы это было разрешено, мы бы инициализировали все статические члены в нем в одном месте очень организованным образом, так как:
//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");
}
};
В отсутствии статического конструктора очень сложно иметь статический вектор и заполнять его значениями, как показано выше. статический конструктор элегантно решает эту проблему. Мы могли бы инициализировать статические элементы очень организованным способом.
Итак, почему С++ не имеет статического конструктора? В конце концов, другие языки (например, С#) имеют статический конструктор!