首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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-02-22
30
问题
有如下程序
#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/Z7yp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)重载运算符int,请在注释//********1********后添加适当的语句。(2)重载运算符“
使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:TestClass2TestClass3注意:不要改动main函数,不能增行或删行,也不能更改
下面模型中为概念模型的是
下列描述中,不属于面向对象思想主要特征的是()。
执行下列语句段后,输出字符’’*"的个数是()。for(inti=50;i>1:--i)cout<<’*’;
在关系数据库中,描述全局数据逻辑结构的是
下列叙述中错误的是
下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的’’<<left",输出效果将发生变化的是()。
下列结构中属于非线性结构的是
如果有以下定义及初始化:inta=3,*p=&a;则由此可以推断,*p的值是()。
随机试题
德育方法中的说服法包含参观、访问和调查等方式。
电子控制汽油喷射发动机燃油供给装置的结构、电路控制方式不同,当出现供油压力过低或不供油故障时,一般先检查()。
图a,b两种状态中,梁的转角φ与竖向位移δ间的关系为()。
A.血液中查到细菌,机体无中毒症状B.血液中可查到病毒C.细菌毒素进入血液,并出现中毒症状D.血液中大量细菌,并有严重中毒症状E.血液中大量化脓菌,并有多器官栓塞性小脓肿病毒血症
A使甲状腺泡上皮萎缩、减少分泌B使甲状腺组织退化、血管减少、腺体缩小变韧C抑制甲状腺过氧化酶,从而抑制甲状腺激素的生物合成D对甲状腺激素代谢无作用,仅能改善甲状腺功能亢进症状E摄取碘提高,摄碘高峰前移普萘
烧伤感染细菌的主要入侵途径为
初次大量注射异种动物免疫血清后,经7~14天,患者出现局部红肿、皮疹、关节肿痛、淋巴结肿大、发热及蛋白尿等症状。此现象可能由下列哪种机制引起
下列不属于房地产心理定价策略的是()。
短语可以由多个词组成,也可以由多个短语组成。()
下列选项中允许用户监控各种系统资源的是( )。
最新回复
(
0
)