C++中成员以其在类中声明的顺序构造

分析以下代码的输出:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#include<iostream>

using namespace std;

 

class A

{

public:

    A(int j):age(j) , num(age + 1)

    {

        cout<<"age:"<<age<<",num:"<<num<<endl;

    }

protected:

    int num;

    int age;

};

 

void main()

{

    A sa(15);

}

 运行结果:age:15 , num:2(num为一个随机数)

由于按成员在类定义中的声明顺序进行构造,而不是按构造函数说明中冒号后面的顺序,所以num成员被赋得是一个随机值,并不是想赋的16,因为这个时候,成员age还没有被赋值,age的内存空间中是一个随机值。其这种属性也包括类中的类对象声明以及在多重继承中的基类构造函数的调用顺序。后面章节我们会慢慢的提到的,请继续关注下面的内容更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值