单选题
有如下程序:
#include<iostream>
using namespace std;
class A{
public
stakic int a;
void init(){a=1;}
A(int a=2) {init(); a++;}
};
int A:; a=0
A obj;
int main()
cout<<obj.a;
return 0;
}
运行时输出的结果是______。
A、
0
B、
1
C、
2
D、
3
【正确答案】
B
【答案解析】
[解析] 创建全局对象obj时调用构造函数A(int a=2),根据静态数据成员和局部变量的作用范围可知,执行init()函数时,用的是静态数据成员,赋值为1;a++时用的是局部变量,即构造函数的参数,此时a自加后变为3,但是这个a是局部变量,不能在主函数中输出,故输出的a值是静态数据成员。
提交答案
关闭