首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序:#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
45
问题
有如下程序:#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全国计算机二级
相关试题推荐
通过指针访问类对象成员的方法是______。
在公有继承的情况下,允许派生类直接访问的基类成员包括()。
冒泡排序算法在最好的情况下的元素交换次数为【】。
在长度为n的有序线性表中进行二分查找,最坏的情况下需要的比较次数为【】。
在算法正确的前提下,评价一个算法的两个标准是【】。
下面不属于软件开发时期的是()。
设有二维数组inta[10][20];,则a[i][j]的地址可由首元素a[0][0]的地址来表达,由此可得访问数组元素a[i][j]的表达式为【】。
结构化程序设计思想的核心是要求程序只由顺序、循环和【】三种结构组成。
sizeof(float)是
下列程序中的重载函数disp()发生错误,错误原因是【 】。#include<iostream,h>classSample{priva
随机试题
下列关于行政诉讼中证据的说法正确的是:()
长期借款筹资与长期债券筹资相比,其特点是()。
企业降低经营风险的途径一般有()。
(2017年)甲公司为支付货款,向乙公司签发一张以A银行为承兑人、金额为100万元的银行承兑汇票。A银行作为承兑人在汇票票面上签章,甲公司的股东B公司在汇票上以乙公司为被保证人,进行了票据保证的记载并签章。甲公司将汇票交付给乙公司工作人员孙某。孙某将该汇
创新型国家的研发投入占GDP的比例在()以上。
遗传素质为个体的发展提供了巨大的、潜在的可能性,制约着儿童身心发展的水平和阶段,所以遗传素质对人的发展起决定作用。()
下列关于经纬线的说法,错误的是()。
建立虚拟局域网的主要原因(35)。
Somanyrepresentatives______,theconferencehadtobeputoff.
SophyBrentcametovisitmenearlyeveryday.Shemademefeeluneasymostofthetime.Shesmoked【C1】______andneverusedana
最新回复
(
0
)