您的位置:首页 > 编程语言 > C语言/C++

C++中成员变量的初始化

2015-05-12 16:29 197 查看
类成员变量的初始化对于初学者来说是一个头疼的问题,总是记不住XXX类型应该怎样进行初始化。为了解决后顾之忧,今天就把类中所有类型的成员变量的初始化做一个总结。

首先,我们来看看C++的类中都有哪几种类型的成员变量。

[cpp] view
plaincopy

class test  

{  

       private:  

    int a;//普通成员  

    const int b;//常量成员  

    static int c;//静态成员  

    static const int d;//静态常量成员  

    int &e;//引用类型成员  

  

};  

大概的类型就是这几类,当然还有其他一些比如 int* f; int* &g;const int* h;这些无非都可以归为以上某一类。因此为了简化就不详细罗列了。

成员变量的初始化有且仅有两种:

1)用“=”赋值

2)用成员初始化列表

记住一点:只能用成员初始化列表有两类:常量成员(注意没有静态常量成员)和引用类型成员。

再记住一点:静态成员和静态常量成员由于是类共有的,不是属于某一个对象的,因此不能再构造函数中初始化。

最后记住一点:静态成员(这里不包括静态常量成员)必须在类外初始化。

最后的最后记住一点:引用变量必须初始化后才能使用。

[cpp] view
plaincopy

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;//也可以这样初始化  

最后说明 一点,成员变量的初始化顺序只与声明的顺序一致,而和在程序中赋值先后顺序无关。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 构造函数 初始化