您的位置:首页 > 其它

成员变量的初始化顺序与变量在类型中的申明顺序相同,而与它们在构造函数的初始化列表中的顺序无关

2012-11-16 16:30 337 查看
From: http://zhedahht.blog.163.com/blog/static/2541117420111169592105/
题目(12):运行下图中的C++代码,输出是什么?

#include
<iostream>

class A

{

private:

int n1;

int n2;

public:

A(): n2(0), n1(n2 + 2)

{

}

void Print()

{

std::cout <<
"n1: " << n1 << ", n2: " << n2 << std::endl;

}

};

int _tmain(int argc, _TCHAR* argv[])

{

A a;

a.Print();

return 0;

}

答案输出n1是一个随机的数字,n2为0。在C++中,成员变量的初始化顺序与变量在类型中的申明顺序相同,而与它们在构造函数的初始化列表中的顺序无关。因此在这道题中,会首先初始化n1,而初始n1的参数n2还没有初始化,是一个随机值,因此n1就是一个随机值。初始化n2时,根据参数0对其初始化,故n2=0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐