首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序:#include<iostream>using namespace std;class A{public: static int a; void init(){a=1;} A(int a=2){init();a++;}};int A::a
有如下程序:#include<iostream>using namespace std;class A{public: static int a; void init(){a=1;} A(int a=2){init();a++;}};int A::a
admin
2013-05-30
57
问题
有如下程序:#include<iostream>using namespace std;class A{public: static 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
解析
本题是一道陷阱题,看似考查类的静态成员变量,实际考查的是:变量作用域的屏蔽效应。在C++中,当标识符的作用域发生重叠时,在一个函数(或块)中声明的标识符可以屏蔽函数(或块)外声明的标识符或全局标识符。本题从行"class A{"到行“int A::a=0;”都是类A的声明部分。行“A obj;”声明了一个类A的全局对象 obj,由于没指定构造参数,所以构造时构造函数的形参a取默认值2。构造函数中首先调用了init函数,将静态成员变量a赋为1,然后将a增1。许多考生此时会很自然地认为是将类A的静态成员变量a增1了,从而导致选择C这个错误答案。其实,此时静态成员变量a被构造函数的形参a所屏蔽,所以a++改变的是形参a的值,对静态成员变量a没有影响,其值还是被init函数所改成的值1。故本题应该选择B。
转载请注明原文地址:https://kaotiyun.com/show/jUNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
在下面的引用定义中,正确的是______。
类的成员函数中,只能用于检测输入操作的函数是______。
在派生类中重新定义虚函数时,除了()方面,其他方面都必须与基类中相应的虚函数保持一致。
完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是()。
在长度为n的有序线性表中进行二分查找,最坏的情况下需要的比较次数为【】。
已知类MyClas有一个只需要一个double型参数的构造函数,其将运算符“+”重载为友元函数。要使语句序列MyClasx(1.2),y(2.3),z(0);z=x+y;能够正常运行,运算符函数operator+应在类中声明为()。
下列函数中,对文件进行写操作的是()。
设有如下关系表:则下列操作中正确的是()。
关系中的“主键”不允许取空值是指【】约束规则。
C++语言中的多态性分为编译时的多态性和【 】时的多态性。
随机试题
A、相须B、相使C、相畏D、相恶E、相反牛半夏配乌头属
港口与航道工程的索赔程序中,()是承包商应完成的工作。
根据《工伤保险条例》规定;职工符合认定或视同工伤条件,但是出现下列情形(),不得认定为工伤或者视同工伤。
H公司是一个高成长的公司,目前每股价格为20元,每股股利为1元,股利预期增长率为6%。公司现在急需筹集资金5000万元,有以下3个备选方案:方案1:按照目前市价增发股票250万股。方案2:平价发行10年期的长期债券。目前新发行的10年期政府债券的到期收
已经十点半了,你现在必须去睡觉。
【2010.江西】个体在道德意识的支配和一定的道德情感激励下,表现出来的一系列具有道德评价意义的行为方式和习惯是()。
领导派你去参加一个“五五普法”联合调查小组,里面你的年龄最小、资质最浅.你如何尽快和大家熟悉起来?
下列与修改表结构相关的命令是( )。
设X为整型变量,n=14,n的地址为4000;m=6,m的地址为2000;执行语句x=&n后的结果为()。
NursingatBethIsraelHospitalproducesthebestpatientcarepossible.Ifwearetosolvethenursingshortage,hospitaladmin
最新回复
(
0
)