为什么C++没有静态构造函数?
如果允许静态构造函数存在,我们会在其中以一种非常有组织的方式初始化所有静态成员,例如:
//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#)有静态构造函数!
static
对象初始化,“实现定义”的顺序已经存在于 §3.6.2 中。 - Matteo Italia