首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序:#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
55
问题
有如下程序:#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://www.kaotiyun.com/show/jUNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
最简单的交换排序方法是()。
友元运算符obj1>obj2被C++编译器解释为()。
当一个函数无返回值时,函数的类型应为()。
在C++语言中,唯一的一个三目运算符是【】。
在C++程序中,使用基本输入输出流需要包含的头文件是()。
若源程序文件abc.cpp中只有一个函数,该函数的名称为【】。
耦合和内聚是评价模块独立性的两个主要标准,其中反映了模块内各成分之间联系的是【】。
有如下函数模板定义: template<class t> T func(Tx,Ty){return x*x+y*y;} 在下列对func的调用中,错误的是
以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是#include<iostream.h>voidmain(){int*p,*q,a,b;p=&a;
随机试题
据统计,新疆现有清真寺、教堂、寺院等宗教活动场所2.48万座,信教群众占新疆人口的56.3%,自治区政府每年投入大笔资金用于保护宗教遗址。这说明在我国()。
A.贫血和出血程度一致B.贫血和出血程度不一致C.有贫血而无出血D.有出血而无贫血E.无出血亦无贫血再生障碍性贫血
大横穴的定位是
男,11岁。左下后牙疼4天,夜间加重1天,无龋洞。对患牙应做何种检查
A.相须B.相使C.相畏D.相恶E.相反生半夏配乌头属
某房地产投资项目的折现率为12%时,净现值为359万元;折现率为13%时,净现值为-83.5万元。该投资项目的财务内部收益率为()。
机电安装工程技术性回访有()。
根据增值税法律制度的规定,判断增值税纳税人类型依据中的年应税销售额是指纳税人在连续不超过12个月的经营期内累计应征增值税销售额,不包括免税销售额。()
甲公司为制造企业,大量生产A、B两种产品。制造费用按产品生产工时比例分配,生产费用采用约当产量比例法在完工产品与月末在产品之间分配,原材料在生产开始时一次投入,其他加工费用发生较为均衡,假设期末在产品的完工程度均为50%。甲公司采用品种法计算产品成本。2
已知a是b的两倍,b的3倍减1等于14,则a为( )。
最新回复
(
0
)