类里面的非static const成员

类里面的成员变量可以用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 };

 

posted @ 2016-06-16 18:21  阿瞒123  阅读(181)  评论(0编辑  收藏  举报