枚举作为常量的奇怪用法
Odd use of enum as a constant
可能重复:
是否有理由在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 };
};
相关文章:
- #定义c-预处理器常量..我做错了什么
- 用C++中的一个变量定义一个常量
- 什么时候在C++中返回常量引用是个好主意
- 代理对象的常量正确性
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 通过多个头文件使用常量变量
- 在cuda线程之间共享大量常量数据
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 是默认情况下分配给char数组常量的值
- CPP/C 中的常量用法和结构构造函数中的澄清
- 引用和指向常量的指针的用法是什么
- 常量关键字用法C++
- C++中常量数据成员的用法
- C++错误:警告:多字符字符常量/a用于用法
- 常量引用在C++中的用法
- 如何举例来反驳“==”用于比较“常量字符*”的用法
- 常量在 C++ 中的用法
- 常量正确性和安全bool习惯用法
- 枚举作为常量的奇怪用法