类里面的成员变量可以用const修饰,在只用const不用static修饰的情况下,这种使用的限制比较多
(1)不能定义处初始化,必须在类的构造函数初始化列表里面初始化(虽然在vs中,可以在定义处初始化,但是这是不符合语法的,如果用g++编译器,就会出现明显的报错,不利于程序的移植)
1 class constNum{ 2 //const int size=10; 错误,不能在定义处对const成员变量进行初始化 3 const int size; 4 public: 5 constNum(int ii=0); 6 }; 7 8 constNUm::constNum(int ii):size(ii){//const成员变量必须在成员构造函数初始化列表里面初始化 9 10 }
(2)const成员变量不能在构造函数中初始化
1 class constNum{ 2 int size; 3 public: 4 constNum(); 5 6 7 }; 8 /* 9 * constNum::constNum(){ 10 * 11 * size=10;//在构造函数中初始化const成员变量是错误的 12 * 13 * } 14 * 15 */
(3)在类里面定义的常量,不能用来定于数组,类里面的常量与c语言里面的const常量的含义几乎一样,是运行时常量,不是编译时常量,类里面的const常量,只是意味着在对象的生命周期内,它的值不能改变
1 class constNum{ 2 const int size; 3 //int a[size]; const常量不能用来定义数组,只有枚举或者static const int size=10才能定义数组大小 4 };