首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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
31
问题
有如下程序
#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://www.kaotiyun.com/show/j7fp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下面是一个模板声明的开始部分:templatedouble…由此可知()。
下列叙述中正确的是()。
下列叙述中正确的是()。
已知类X中一个成员函数的原型声明为“voidCopy(X&r);”,则下列选项中,解释正确的是()。
下列选项中属于面向对象设计方法主要特征的是
在语句“cout
一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。
下列选项可以做C++标识符的是()。
在C++中,打开一个文件时与该文件建立联系的是()。
随机试题
一类高层建筑和建筑高度超过32m的二类高层建筑的下列部位应设排烟设施。以下哪条是错误的?[2003年第94题]
运用最低费用选择法确定财政支出项目有哪些步骤?
A.自动态平衡B.他动态平衡C.静态平衡D.站立平衡E.坐位平衡在无外力作用下,在睁眼和闭眼时维持某种姿势稳定的过程为
在正常人肠道中数量最多的细菌是
外墙()的安装高度有限制。
根据《建设工程质量管理条例》的规定,下列关于保修期限叙述正确的是()。
企业购入资产超过正常信用条件延期付款,实质上具有融资性质时,应按购买价款的现值,借记“固定资产”、“在建工程”等科目,按应支付的价款总额,贷记“长期应付款”科目,按期差额借记“未确认融资费用"科目。()
学校:教师
计算机硬件系统主要包括:中央处理器(CPU)、存储器和_______。
Mosttrivialargumentsaresaidtobebasedonmattersofprinciple.Whyshouldprinciplesmattersomuch?Whycannotwebemore
最新回复
(
0
)