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