在定义一个类内的专属常量时,通常定义成为静态常量类型,如:
class GamePlayer
{
private:
static const int NumTurns = 5;
int scores[NumTurns];
....
};
如果编译器不支持类内静态成员初始化,则可以使用“the enum hack”的补偿做法。
class GamePlayer
{
private:
//static const int NumTurns = 5;
enum { NumTurns = 5 };
int scores[NumTurns];
....
};
ps.
之所以不使用#define的原因是,#define无法控制该常量的可视范围
对于单纯的常量,最好以const对象或者enum替换#defines
对于形似函数的macro,最好改用inline函数替换#defines