将静态常量数据成员初始化移到类定义之外

时间:2019-09-08 10:37:01

标签: c++ arrays class static const

我读到,在类定义内定义或初始化静态成员会违反这样的想法,即类定义仅是一个蓝图,不会保留任何内存。

但是我有一个常量值,需要在类内部初始化数组,因此我必须在类定义内部对其进行初始化,并且它可以正常工作,但是,有没有更好的方法呢?还是这是最好的方法?

class A{
    static const int N = 32;
    int arr[N];
};

1 个答案:

答案 0 :(得分:0)

  

我读到在类内部定义或初始化静态成员   定义将违反类定义只是一个   蓝图,并且不保留任何内存

我的拙见:没看过那件事。

类内初始化器是一件好事。当然,在某些情况下并不是最佳解决方案,但在您的情况下,它不仅是最佳解决方案,而且几乎是唯一的解决方案,因为必须在编译时知道数组的大小(除了使N为模板参数)。

作为旁注,我建议您强烈考虑从C数组移至std::array

class A {
    static constexpr int N = 32;
    std::array<int, N> arr;
};