在类class的定义中,不同定义方式的成员变量的初始化方式各不一样。
对于变量的初始化主要分以下几种情况:
1)普通变量
一般的成员变量的初始化不能在定义是进行初始化的,但此类数据成员是能够在构造函数中进行初始化的,也能够在初始化列表中进行初始化。
使用构造函数定义方式如下:
class test{
public:
int n1,n2;
test(){
n1=2;
n2=3;
}
};
使用初始化列表的形式定义如下:
class test{public:
int n1,n2;
test():n1(2),n2(3){
}
};
在初始化列表中函数的初始化顺序是按照变量的定义顺序来初始化的,与初始化列表中变量的执行顺序无关。
2)const 成员变量
对于const成员变量不能像普通成员变量一样在构造函数中进行初始化操作,它只能在初始化列表中进行初始化操作。
class test{
public:
const int n1,n2;
test():n1(2),n2(3){
}
};
3)static成员变量
对于static成员变量它是属于类的范畴,不属于特定对象,既不能在构造函数中进行初始化工作,也不能在初始化列表中进行初始化,只能在类的外面进行定义。
class test{
public:
static int n1,n2;
test(){
}
};
int test::n1=2; int test::n2=3;
4)const static类型的成员变量
const static修饰的成员变量是静态成员变量,只能在定义的时候对其进行初始化。
class test{
public:
const static int n1=2,n2=3;
public:
test(){
}
};