首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #include using namespace std; class AA{ char c; public: AA(char ch):c(ch){ cout
有如下程序 #include using namespace std; class AA{ char c; public: AA(char ch):c(ch){ cout
admin
2021-09-05
32
问题
有如下程序
#include
using namespace std;
class AA{
char c;
public:
AA(char ch):c(ch){ cout<
~AA(){ cout<<"a"; }
};
class BB{
AA m1;
AA m2;
public:
BB(): m2(’p’),m1(’q’){ cout<<"B"; }
~BB(){ cout<<"b"; }
};
int main(){
BB bb;
return 0;
}
运行这个程序的输出是
选项
A、pgBaab
B、pgBbaa
C、qpBaab
D、qpBbaa
答案
D
解析
构造函数初始化列表仅指定用于初始化成员的值,不指定这些初始化执行的次序,成员初始化的次序是类定义中声明成员的次序,成员初始化完成后执行构造函数的函数体;所以程序中在创建BB对象时,首先初始化m1,再初始化m2,由于m1、m2都是AA对象,且有实参q、p,所以调用构造函数AA(char ch),用ch初始化成员c后输出成员c的值,即输出’q’、’p’,再执行类BB的函数体,输出’B’;
程序执行结束时,系统会自动调用类的析构函数清理自己的成员,析构函数工作过程:1、执行析构函数的函数体;2、如果该类中拥有类对象成员,且类对象有析构函数,则以类对象成员声明次序的相反顺序调用其析构函数,销毁类对象成员;3、按原来构造顺序的相反顺序向上依次调用基类的析构函数。所以程序运行结束时,首先调用BB的析构函数并执行函数体,输出"b";然后调用m2的析构函数,销毁m2成员,输出’a’,再调用m1的析构函数,销毁m1成员,输出’a’;综上所述,程序运行的输出是:"qpBbaa";答案为D。
转载请注明原文地址:https://kaotiyun.com/show/j7fp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
请打开考生文件夹下的解决方案文件proj2,此工程中包含一个源程序文件main.epp,其中有“房间”类Room及其派生出的“办公室”类Office的定义,还有主函数main的定义。请在程序中“//****found****”下的横线处填写适当的代码并
软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。
运算符重载时不需要保持的性质是()。
已知函数func的原型为intfunc(int,int);则下列选项中,不能作为它的重载函数原型的是()。
字面常量42、4.2、42L的数据类型分别是()。
数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和()。
以下描述中,不是线性表顺序存储结构特征的是()。
下列关于运算符重载的叙述中,错误的是()。
数据库系统的三级模式不包括()。
在下列字符中,不允许作为C++标识符的是()。
随机试题
火邪、暑邪共同的致病特点是
A.月经来潮第6天B.月经来潮第5天C.月经来潮第3天D.月经来潮第2天E.月经来潮6小时内为确定排卵和黄体功能,选择诊断性刮宫的时间是
20根地址线的寻址范围可达()。
风管安装时,其支、吊架或托架不宜设置在()处。
关于日常处理的特点,下列说法错误的是()。
TheAllRisksofmarinecargotransportationinsurancecoversrisksof()
夏天从冰箱里取出一瓶啤酒,发现啤酒外面“出汗”,对这种现象正确的解释是()。
地球上的生命大约起源于45亿年前,而根据目前所发现的人类化石,大约到距今500万年前,古猿才进化演变成最初的原始人类。()
一个实验有三组被试,各组被试人数相同,方差分析的总自由度是29,则该实验每组的被试数是
(2012年上半年)某公司技术人员人力成本如下表所示。项目经理根据项目总体要求制定了某项目的网络资源计划图(如下图所示,单位为日,为简化起见,不考虑节假日),并向公司申请了2名分析师负责需求分析,3名设计师负责系统设计,10名
最新回复
(
0
)