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

 

分析以下代码的输出:

#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的内存空间中是一个随机值。

posted on 2013-11-12 16:58  猿人谷  阅读(1239)  评论(0编辑  收藏  举报