求助一道C++试题

#include<iostream>usingnamespacestd;classA{public:staticinta;voidinit(){a=1;}A(inta=2... #include<iostream>
using namespace std;
class A
{
public:
static int a;
void init(){a=1;}
A(int a=2) {init();a++;}
};
A obj;
int A::a=0;
int main()
{
cout<<obj.a;
return 0;
}
运行时输出的结果是什么,为什么啊,我觉得是3,可是答案给2,调试时却得到1
构造函数中a++修改的是它参数中的局部变量a,而不是类的静态数据成员变量a!静态成员函数不是共享的么,一修改了全都变啊,为什么是1啊,他初始化不是0么?
展开
 我来答
百度网友4176d98f3
2007-09-20 · 超过46用户采纳过TA的回答
知道答主
回答量:128
采纳率:0%
帮助的人:0
展开全部
它初始化是0,但是构造函数中调用的init函数不是把它修改为1了嘛,呵呵!init函数修改的可是类的静态数据成员a噢

运行结果为1
构造函数中a++修改的是它参数中的局部变量a,而不是类的静态数据成员变量a!你可以通过下面的代码就能够看的出来!
#include<iostream>
using namespace std;
class A
{
public:
static int a;
void init(){a=1;}
A(int a=2) {init();a++;cout<<A::a<<" "<<a<<endl;}
};

int A::a=0;
A obj;
int main()
{
cout<<obj.a<<endl;
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式