在c++中,类里面的成员变量不仅仅可以被const修饰,还可以被static const修饰,此时一个内建类型(如int ,char ,long等)的static const 可以看做是一个编译期间的常量,可以被用作数组下标
例如:
class StringStack{ static const int size=100;//虽然可以在类的外部用const int StringStack::size=100初始化,但是这样就不可以作为数组下标了 int a[size];//作为数组下标出现 };
《thinking in c++》中page198:必须在static const 定义的地方对它进行初始化,这是在类中使用static const的特征之一,也显得有点与众不同。这种情况只会伴随static const一起出现:也行更喜欢把它用在其他情况下,但不行,因为所有其他的数据成员必须在构造函数或者其他成员函数中初始化。
另外一种在老版本c++中可以见到的一种可以用无标记的enum来定义一个编译期间常量,从而作为数组下标
1 class Bunch{ 2 3 enum{size=100}; 4 int i[size]; 5 6 7 };