静态数据成员按定义出现的先后顺序依次初始化,出问题了

shaode01 2013-05-26 01:19:32
#include <iostream.h>
class A
{
int i;
static int x;
public :
static int y;
// A(int a,int b,int c)
// {
// i=a;
// x=b;
// y=c;
// }
void print()
{
cout<<"i="<<i<<" x="<<x<<" y="<<y<<endl;
}
};
int x=4;
int A::y=x;
int A::x=3;

void main()
{
// A a(11,22,33);
A a;
a.print();
// A b(100,200,300);
A b;
a.print();
b.print();
A::y=400;
b.print();
}





如果是按定义的顺序初始化,给y赋值的时候x什么也没有呢,如果是默认为0,那y就是0,但结果输出y是3
...全文
64 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaode01 2013-05-26
  • 打赏
  • 举报
回复
搜“按定义出现的先后顺序依次初始化”出来好多
shaode01 2013-05-26
  • 打赏
  • 举报
回复
引用 2 楼 hugett 的回复:
按类中声明的顺序来初始化。。
网上“按定义出现的先后顺序依次初始化”的说法甚嚣尘上啊
shaode01 2013-05-26
  • 打赏
  • 举报
回复
引用 1 楼 u010720987 的回复:
初始化顺序是你的声明的顺序,所以y=3。详细可以参考 《think in c++》卷一
能不能告诉我在哪一章?网上“按定义出现的先后顺序依次初始化”的说法甚嚣尘上啊
hugett 2013-05-26
  • 打赏
  • 举报
回复
按类中声明的顺序来初始化。。
arnold0kang 2013-05-26
  • 打赏
  • 举报
回复
初始化顺序是你的声明的顺序,所以y=3。详细可以参考 《think in c++》卷一

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧