繁体   English   中英

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

[英]Move the static constant data member initialization outside the class definition

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

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

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

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

我的拙见:没看过那东西。

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

作为附带说明,我建议您强烈考虑从C数组移至std::array

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM