首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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
14
问题
有如下程序
#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全国计算机二级
相关试题推荐
有如下类和对象的定义:classConstants{public:staticdoublegetPI(){return3.1416;}};Constantsconstants;下列各组语句中,能输出3.1416的是()。
已知函数f的原型是voidf(int*a,long&b);,变量v1、v2的定义是:intv1;longv2;下列调用语句中正确的是()。
为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。
有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为()。
请打开考生文件夹下的解决方案文件proj2,其中在编辑窗口内显示的主程序文件中定义有类xBase和XDerived,以及主函数main。程序文本中位于每行’’//**********found**********下面的一行内有一处或多处下划线标记,请在每个
下列运算符中,不能被重载的是()。
在函数中,可以用auto、extem、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是()。
下列数据结构中,属于非线性结构的是()。
下列选项中属于面向对象设计方法主要特征的是()。
在下列字符中,不允许作为C++标识符的是()。
随机试题
美国学者提出课程改革后的推广建议包括()
A.弦紧脉B.弦数脉C.弦滑数脉D.弦细脉E.沉细脉
《中国人民解放军测绘条例》是由中央军委于()1月10日颁布的。
某股份有限公司注册资本为4800万元。公司现有法定公积金1800万元,任意公积金800万元。公司拟转增注册资本,进行增资派股。以下的方案中,不符合《公司法》规定的有()。
下列事项中,属于财务报表日后非调整事项的有()。
有哪些方法可以实现在Windows中复制、剪切、粘贴、移动和删除文件、文件夹?
电影是一种虚拟艺术,历史片并不是书写历史。电影创作必须充分发挥艺术想象力,并进行精心选择与剪裁。电影作品是艺术而不是学术,我们应该给予其___________的宽容,不能过分___________,用学术性的眼光求全责备。填入画横线部分最恰当的一项是(
()对于失败相当于发奋对于()
中世纪早期的教会学校不包括
感染计算机病毒的原因之一是
最新回复
(
0
)