求助一道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么? 展开
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么? 展开
展开全部
它初始化是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;
}
运行结果为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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询