我读到,在类定义内定义或初始化静态成员会违反这样的想法,即类定义仅是一个蓝图,不会保留任何内存。
但是我有一个常量值,需要在类内部初始化数组,因此我必须在类定义内部对其进行初始化,并且它可以正常工作,但是,有没有更好的方法呢?还是这是最好的方法?
class A{
static const int N = 32;
int arr[N];
};
答案 0 :(得分:0)
我读到在类内部定义或初始化静态成员 定义将违反类定义只是一个 蓝图,并且不保留任何内存
我的拙见:没看过那件事。
类内初始化器是一件好事。当然,在某些情况下并不是最佳解决方案,但在您的情况下,它不仅是最佳解决方案,而且几乎是唯一的解决方案,因为必须在编译时知道数组的大小(除了使N
为模板参数)。
作为旁注,我建议您强烈考虑从C数组移至std::array
:
class A {
static constexpr int N = 32;
std::array<int, N> arr;
};