静态成员vs静态const成员实例化 - 有什么区别?

时间:2016-02-24 14:18:41

标签: c++ static

这两个成员在初始化和实例化方面究竟有什么区别?:

class Test {
    // ctor, dtor, ... here
private:
    static int m_test = 0;             // error - non-const ...
    static const int m_const_test = 0; // working - const ...
};

为什么非const成员的初始化无效? 何时将两个变量(假设非const成员没有init!)实例化?

编辑:即使这个问题的很大一部分可以叠加到上述帖子中,我也不认为我的问题的每一部分都在这些条目中得到解答。

BR,Tuna

2 个答案:

答案 0 :(得分:1)

如果多个编译单元包含您的类定义,那么应该放置哪一个静态int m_test = 0?对于const static ...,它无关紧要,因为它是常量。

答案 1 :(得分:0)

声明为const的m_const_test无法更改。

因此,您可以使用m_const_test节省一点时间,但不如m_test灵活。