首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序:#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
25
问题
有如下程序:#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全国计算机二级
相关试题推荐
类的成员函数中,只能用于检测输入操作的函数是______。
若以非成员函数形式,为类Bounce重载“!”运算符,其操作结果为一bool型数据,则该运算符重载函数的原型是【】。
以下关于数据库系统的叙述中,正确的是()。
数据结构分为线性结构和非线性结构,线性表、栈和队列都属于【】。
对建立良好的程序设计风格,下面描述正确的是()。
设置虚基类的目的是解决二义性问题,可通过【】标识虚基类。
写出下列程序的运行结果。#include<iostream.h>classX{ public:virtualvoiddisp(){cout<<”X类的disp函数<<”end1;}};
在关系代数运算中,并、笛卡尔积、投影、选择和【】为基本的运算。
执行语句序列ofstreamoutfile("data.dat");if(...)cout<<"ok";elsecout<<"fail";后,如果文件打开成功,显示“ok”,否则显示“fail”。由此可知,上面if语句的“...
已知:doubleA(doubleA){return++a;}和intA(intA){return++a;}是一个函数模板的两个实例,则该函数模板定义为【】
随机试题
以八纲辨证,因劳倦伤气,血失统摄,孕产过多,在妇科引起的病变都属于
《难经经释》说:“邪扶生气而来,虽进而易退”,是指()
缓泻药连续使用时间一般不应超过
下列()不属于措施项目清单的编制依据。
安装取源部件的开孔和焊接必须在工艺管道的()前进行。
2010年3月22日,甲公司谎称自己有工程发包,邀请乙、丙、丁三家建筑公司来投标,这三家建筑公司经过认真准备都参加了投标,在所谓的“评标”之后,大家才知道真相。则以下说法错误的是()。
已知某工程双代号网络图如下,按照计划安排工作F的最早开始时间为()。
下列年份中,哪一年生产的正品数与次品数最为接近?( )1990~1994年五年中,该企业生产的此种产品总共大约有多少正品?( )
“二战”后法国报业的整顿、恢复和发展。
Thereareseveralpossiblerelationshipsbetweenlanguageandsociety.Oneiswhatsocialstructuremayeitherinfluenceordete
最新回复
(
0
)