首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序:#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
29
问题
有如下程序:#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全国计算机二级
相关试题推荐
下面程序用于计算矩阵的两条对角线上的元素之和。补充下列语句,实现该功能。#include<iostream.h>voidmain(){inta[3],[3]={9,8,7,6,5,4,3,2,1};ints
当一个函数无返回值时,函数的类型应为()。
结构化程序设计主要强调的是()。
在算法正确的前提下,评价一个算法的两个标准是【】。
凡是函数中未指定存储类别的局部变量,其隐含的存储类型是()。
下列对于虚函数和重载函数的叙述,正确的是()。
有如下语句序列:intk=0;do{k+=5;cout<<’$;}while(k<19);while(k-->0)cout<<’*’;执行上面的语句序列输出字符$和*的个数分别是______。
在C++语言中,080是()。
在C++中,包含了处理用户控制的文件操作所需的信息是指头文件中的【】。
以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是#include<iostream.h>voidmain(){int*p,*q,a,b;p=&a;
随机试题
为消除危险所采取的技术措施和管理措施是危险的()。
A.口开不闭B.口角流涎C.口舌喁斜D.口唇糜烂E.口部抽掣(2002年第77,78题)脾虚湿盛多见()
A.逆转录B.中心法则C.复制D.翻译E.转录遗传信息由DNA传递到蛋白质的过程叫作
A、地骨皮B、牡丹皮C、杜仲D、黄柏E、桑白皮断面不平坦,外层黄棕色,内层灰白色的药材是
A.地西泮B.四环素C.华法林D.维生素KE.氯霉素可导致胎儿严重出血甚至死胎的药物是()。
沥青的闪点是受热沥青试样所挥发的油分气体,遇以规定方法与之接触的试焰,初次发生一瞬即灭的闪火时的试样温度。()
某13层钢框架结构,箱形方柱截面如下图所示,抗震设防烈度为8度;回转半径ix=iy=173mm,钢材采用Q345(fx=300N/mm2,fy=325N/mm2)。试问,满足规程要求的最大层高h(mm),应最接近于下列( )项数值。提示:①按
甲公司2019年6月20日销售一批价值5000元(含增值税)的商品给乙公司,乙公司于次日开具一张面值5000元、利率8%、期限3个月的商业承兑汇票。甲公司因资金周转需要,于2019年8月20日持该票据到银行贴现,贴现率为12%,则甲公司该票据的贴现额是(
用九个指头与一个指头来形容我们工作中成绩是主要的,缺点和错误是次要的,当然是可以的。但是,这决不等于只谈九个指头,不必谈一个指头,更不等于那一个指头已经不存在。这段文字主要是在强调()。
下列关于SQLServer2008数据库文件的说法,错误的是()。
最新回复
(
0
)