C++构造函数初始值列表

来源:互联网 发布:西安软件行业成都 编辑:程序博客网 时间:2024/05/16 08:06

当一个类中有引用类型成员变量,和const成员变量时,他们是不能通过构造函数赋值初始化的。

只能通过构造函数初始值列表进行初始化:

class ClassX {public:    int a;    int &c;    const int d;private:    int b;public:    ClassX(int a, int b)://注意要跟一个冒号再加列表        c(a), d(9) {        this -> a = a;        this -> b = b;        //this -> c = c;        //this -> d = d;    }    int getb() {        return this -> b;    }};int main(){    ClassX classX(1, 2);    cout << classX.a << classX.getb() << classX.c << classX.d << endl;    return 0;}


上面的c、d分别是引用类型和常量类型的成员变量,通过c(a)、d(9)进行了初始化。

初始化时会按照成员变量的声明顺序,而不是构造函数初始值列表中的顺序。如果你决定使用初始化列表,请按照它们声明的顺序罗列这些成员。这将有助于消除混淆。

=======================

如果定义变量时没有指定初值,则变量被“默认初始化”。

如果内置类型的变量未被显示初始化,他的值由定义的位置决定:定义于任何函数之外的变量将初始化为0,定义在函数体内部的值将不能被初始化,其值将是未定义的。

一些类要求每个对象都先时初始化。

建议初始化每一个内置类型的变量。


原创粉丝点击