首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序:#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
26
问题
有如下程序:#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全国计算机二级
相关试题推荐
下列关于虚函数调用的描述,______是正确的。
已知程序中已经定义了函数test,其原型是inttest(int,int,int);,则下列重载形式中正确的是()。
关系R和关系S的并运算是()。
有以下定义:“intt[3)[2]”,能正确标识t数组元素地址的表达式是()。
数据库应用的核心是指【】。
若深度为5的完全二叉树的第5层有3个叶结点,则该二叉树一共有【】个结点。
语句ofstreamf("SALARY.DAT",ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,并且()。
要定义数组A,使得其中每个元素的数据依次为:3、9、4、8、0、0、0,错误的定义语句是______。
下列程序编译时发现pb->f(10);语句出现错误,其原因是______。#include<iostream.h>classBase{public:voidf(intx){cout<<"Base:"<<
随机试题
某家庭在一年的支出共为2000元,其中粮食700元,水果、蔬菜和其他饮食用品为500元,教育支出为500元,衣物和其他杂项开支为300元,问:这家是否应享有社会生活困难补助?
A.关联审评审批程序B.简化审批程序C.附条件批准程序D.突破性治疗药物程序对于治疗严重危及生命且尚无有效治疗手段的疾病的药品,药物临床试验已有数据证实疗效并能预测其临床价值的,可以申请
脑膜刺激征阳性时,下列哪项检查阳性
对同一电网内的(),执行相同的电价标准。
如何处理()之间的关系,尽量使鱼和熊掌二者兼得,是产业组织政策要解决的核心问题。
从2015年1月1日起,甲公司实行累积带薪缺勤制度。该制度规定,每个职工每年可享受5个工作日带薪休假。未使用的年休假只能向后结转一个公历年度,超过1年未使用的权利作废,在职工离开公司时也无权获得现金支付;职工休假时,首先使用当年可享受的休假权利,不足部分再
吉林省已探明储量的矿产资源有89种,其中()等11种矿产储量居全国首位。
有人说“腐败是经济的润滑剂”,作为一名人民警察,你怎么看?
按作用域分类,变量有局部变量、【】、方法参数和异常处理参数。
Psychologiststakeoppositeviewsofhowexternalrewards,fromwarmpraisetocoldcash,affectmotivationandcreativity.Beha
最新回复
(
0
)