分析以下代码的输出:
#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的内存空间中是一个随机值。