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

当一个类中有引用类型成员变量,和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,定义在函数体内部的值将不能被初始化,其值将是未定义的。

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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值