c++primer这么说:
class StrVec{ static allocator<string> alloc; string*elements; public: StrVec()://allovator成员进行默认初始化 elements(nullptr) { } ........ }
默认构造函数(隐式地)默认初始化alloc并(显示地)将指针初始化为nullptr
然而这本书之前就说过了:
类的静态成员不是由类的构造函数初始化的
本人想问这个前后矛盾咋回事?(隐式地)默认初始化alloc是怎么个初始化法?
解决方案:5分
和全局变量的初始化时机一样
解决方案:10分
类的静态变量不是必须由构造函数初始化的,比构造函数要早。
解决方案:5分
c++14 draft n4296
9.4.2 static data members
6 Static data members are initialized and destroyed exactly like non-local variables (3.6.2, 3.6.3).
静态成员初始化和构造关系不大。
9.4.2 static data members
6 Static data members are initialized and destroyed exactly like non-local variables (3.6.2, 3.6.3).
静态成员初始化和构造关系不大。