首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序:#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
41
问题
有如下程序:#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(){chars1[]=”Hello”,s2[]="World";char*p1,*p2;inti
完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是()。
下列有关析构函数的说法错误的是()。
在C++中,打开一个文件,就是将这个文件与一个【】建立关联,关闭一个文件,就是取消这种关联。
C++中使用【】代替C语言中的宏。
结构化分析方法SA、结构化设计方法SD,和JACKSON方法,是在软件开发过程中常用的方法,人们使用SA方法时可以得到______。
线性表采用链式存储方式时,结点的存储地址______。
在C++程序中,使用基本输入输出流需要包含的头文件是()。
随机试题
中国进入社会主义社会的最主要标志是()
A.交替脉B.颈静脉怒张C.水冲脉D.脉短绌慢性左心衰竭可出现
一幅肾脏CT扫描图像,W200、C100,则该图像显示的CT值范围在
足阳明胃经的主治病证是
痄腮的病因是
患者男,46岁。患消化道溃疡多年,今晚饮酒后出现上腹部剧烈疼痛,面色苍白,腹肌紧张,全腹明显压痛反跳痛。该患者首要的护理措施是
根据有关法律法规,债的发生根据有()。
采用悬臂浇筑法施工的预应力混凝土连续梁,确定悬臂浇筑段前段标高时,应考虑的因素有()。
Inthesummerheat,it’seasytodeveloptheembarrassingproblemofbodyodorifyou’renotcareful.Bacterialiveallovero
A、Sellhotdogsoricecream.B、Taketicketstocustomers.C、Takeupspecialservicejobs.D、Seetothecompany’smanagement.D
最新回复
(
0
)