【发布时间】:2020-09-10 07:30:03
【问题描述】:
我对旧 C++ 代码的一部分有疑问。 在类 myClass 的头文件中有一个静态数组成员定义如下:
static const int myArray[];
在.cpp文件中初始化如下:
const int myClass::myArray[]={2,4,5,7,9,11,13};
允许吗?
我暂时不在乎它是否不好,我只是想知道它是否会给我带来奇怪的问题..
【问题讨论】:
-
是的,完全没问题
-
最好使用
const std::array<int,FIXED_SIZE> myArray;或const std::vecto<int> myArray;。这将为您在以后调试可能出现的问题时节省大量时间。 T代码的现有部分不会受到太大影响,在最好的情况下您不需要更改任何内容。只是说。` -
允许吗?你害怕什么?空括号?在
.h文件中,它只是一个声明。因此,其他翻译单元不需要知道大小。在.cpp文件中,大小由初始化决定。请注意:static成员变量不会影响班级规模。因此,对于该类的实例,不需要static成员的实际大小。.cpp文件中的初始化是必要的。否则,链接器会抱怨。 (较新的标准添加了static inline,但您标记了c++98,这仍然是遥不可及的未来。)