类成员变量的初始化对于初学者来说是一个头疼的问题,总是记不住XXX类型应该怎样进行初始化。为了解决后顾之忧,今天就把类中所有类型的成员变量的初始化做一个总结。
首先,我们来看看C++的类中都有哪几种类型的成员变量。
- class test
- {
- private:
- int a;//普通成员
- const int b;//常量成员
- static int c;//静态成员
- static const int d;//静态常量成员
- int &e;//引用类型成员
- };
成员变量的初始化有且仅有两种:
1)用“=”赋值
2)用成员初始化列表
记住一点:只能用成员初始化列表有两类:常量成员(注意没有静态常量成员)和引用类型成员。
再记住一点:静态成员和静态常量成员由于是类共有的,不是属于某一个对象的,因此不能再构造函数中初始化。
最后记住一点:静态成员(这里不包括静态常量成员)必须在类外初始化。
最后的最后记住一点:引用变量必须初始化后才能使用。
- class test
- {
- //int a=1;//错误:对象没有构造,尚未分配内存空间
- int a;
- const int b;
- //static int c=1;//错误:不可以在声明时初始化
- static int c;
- const static int d=1;//唯有该类型可以这样
- int &e;//引用类型必须用成员初始化列表
- public:
- test(int _e):b(1),e(_e)/*引用初始化必须为左值*/{}
- };
- int test::c=1;
- const int test::d=1;//也可以这样初始化
最后说明 一点,成员变量的初始化顺序只与声明的顺序一致,而和在程序中赋值先后顺序无关。