类的静态成员会被隐式初始化?该怎么解决
类的静态成员会被隐式初始化?
c++primer这么说:
默认构造函数(隐式地)默认初始化alloc并(显示地)将指针初始化为nullptr
然而这本书之前就说过了:
类的静态成员不是由类的构造函数初始化的
我想问这个前后矛盾咋回事?(隐式地)默认初始化alloc是怎么个初始化法?
------解决思路----------------------
和全局变量的初始化时机一样
------解决思路----------------------
类的静态变量不是必须由构造函数初始化的,比构造函数要早。
------解决思路----------------------
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).
静态成员初始化和构造关系不大。
c++primer这么说:
class StrVec{
static allocator<string> alloc;
string*elements;
public:
StrVec()://allovator成员进行默认初始化
elements(nullptr) { }
........
}
默认构造函数(隐式地)默认初始化alloc并(显示地)将指针初始化为nullptr
然而这本书之前就说过了:
类的静态成员不是由类的构造函数初始化的
我想问这个前后矛盾咋回事?(隐式地)默认初始化alloc是怎么个初始化法?
------解决思路----------------------
和全局变量的初始化时机一样
------解决思路----------------------
类的静态变量不是必须由构造函数初始化的,比构造函数要早。
------解决思路----------------------
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).
静态成员初始化和构造关系不大。