分析以下代码的输出:
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的内存空间中是一个随机值。其这种属性也包括类中的类对象声明以及在多重继承中的基类构造函数的调用顺序。后面章节我们会慢慢的提到的,请继续关注下面的内容更新