两段程序为何结果不同?

niumowang1985 2008-04-06 03:47:11
两程序为何结果不同?

#include <iostream>
using namespace std;
class glove
{
public:
glove(int numfingers):_n(numfingers),_hand(_n)
{
cout<<"glove with"<<_hand<<"fingers\n";
}
private:
// int _hand;
int _n;
int _hand;
};
int main()
{
glove name(5);

return 0;

}
运行结果:glove with5fingers

#include <iostream>
using namespace std;
class glove
{
public:
glove(int numfingers):_n(numfingers),_hand(_n)
{
cout<<"glove with"<<_hand<<"fingers\n";
}
private:
int _hand;
int _n;
// int _hand;
};
int main()
{
glove name(5);
return 0;

}
运行结果:glove with-858993460fingers

编译器:Microsoft Visual C++ 6.0

...全文
80 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
f22fbi 2008-04-06
  • 打赏
  • 举报
回复
1L正解
ttkk_2007 2008-04-06
  • 打赏
  • 举报
回复
按照成员变量声明的顺序初始化,第二个_hand先被声明,应该先被初始化,此时,n是随机值,因此,_hand是随机值
zyustc 2008-04-06
  • 打赏
  • 举报
回复
初始化列表的执行顺序由类声明中变量顺序决定
Supper_Jerry 2008-04-06
  • 打赏
  • 举报
回复
glove(int numfingers):_n(numfingers),_hand(_n)
初始化列表中构造顺序是按照变量的定义顺序来的
所以_hand先_n,第二个程序构造_hand的时候_n是乱码。
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-04-06 03:47
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下