它的隐含数据类型是整数这个问题并不是问题。因为在C++中,只有整数类型才能成为真正的常量,在编译时就确定它的值并使用,而其它类型如double的常量只是一个“不允许改变值的变量”。
事实上,下面这个声明:
const int a = 3;
如果你在代码中从来没有取a的地址或引用,按照规定,编译器是不会为a分配地址空间的。而
const double a = 3.0;
则一定会为它分配一个地址空间。
因此,枚举常量和整型常量最常用到的情况(作为“真正的常量”)行为是相似的,在不能正确处理整数常量的编译器上使用枚举代替是一种可行的办法。