可能重复:
是否有理由在C++代码中使用枚举来定义单个常量?
我刚刚在一些旧代码中发现了以下片段,其中使用了enum:-
class MyClass
{
public:
enum {MAX_ITEMS=16};
int things[MAX_ITEMS];
...
} ;
这比#define MAX_ITEMS 16
好,但它和static const int MAX_ITEMS=16;
有什么不同吗?
回到内存的迷雾中,我记得一些C++编译器不允许初始化类中的常量,而是需要一个单独的。。。
const int MyClass::MAX_ITEMS = 16;
在.cpp源文件中。这只是一个老办法吗?
这是旧的"enum hack">,用于初始化类定义内的数组。
传统上,在C++03之前,不可能在类声明中初始化static
const
。由于数组声明中需要一个编译时常量索引。枚举破解被用作一种变通方法。
class A
{
enum { arrsize = 2 };
static const int c[arrsize] = { 1, 2 };
};