类的静态成员会被隐式初始化?

C++语言 码拜 9年前 (2015-11-02) 957次浏览
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).
静态成员初始化和构造关系不大。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明类的静态成员会被隐式初始化?
喜欢 (0)
[1034331897@qq.com]
分享 (0)