cplusplus初始化顺序

1,继承的顺序;

#include<iostream>

using namespace std;

class  AAA
{
    public:
    AAA(){
        cout<<"AAA"<<endl;
    }
};

class BBB
{
    public:
    BBB(){
        cout<<"BBB"<<endl;
    }
};

class CCC: public BBB , AAA
{
    public:
    CCC(){
        cout<<"cccc"<<endl;
    }
};


int main()
{
    CCC c1;

    return 0 ;

}

输出结果:

./a.out
BBB
AAA
cccc 

 

2,声明顺序:

#include<iostream>

using namespace std;

class  AAA
{
    public:
    AAA(){
        cout<<"AAA"<<endl;
    }
};

class BBB
{
    public:
    BBB(){
        cout<<"BBB"<<endl;
    }
};

class CCC
{
    public:
    CCC():a1(),b1(){
        cout<<"cccc"<<endl;
    }

    BBB b1;
    AAA a1;
    
};


int main()
{
    CCC c1;

    return 0 ;

}

输出结果:

./a.out
BBB
AAA
cccc

3,初始化列表的作用:

  • 常量成员, 因为常量只能初始化不能赋值, 所以必须放在初始化列表里面.

  • 引用类型, 引用必须在定义的时候初始化, 并且不能重新赋值, 所以也要写在初始化列表里面.

  • 没有默认构造函数的类类型, 因为使用初始化列表可以不必调用“缺省构造函数+拷贝赋值运算符”来初始化, 而是直接调用“拷贝构造函数”初始化.

 

 

参考:

https://www.cnblogs.com/silenzio/p/11766609.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值