首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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-05-06
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(charch),用ch初始化成员c后输出成员c的值,即输出’q’、’p’,再执行类BB的函数体,输出’B’;程序执行结束时,系统会自动调用类的析构函数清理自己的成员,析构函数工作过程:
1、执行析构函数的函数体;
2、如果该类中拥有类对象成员,且类对象有析构函数,则以类对象成员声明次序的相反顺序调用其析构函数,销毁类对象成员;
3、按原来构造顺序的相反顺序向上依次调用基类的析构函数。
所以程序运行结束时,首先调用BB的析构函数并执行函数体,输出"b";然后调用m2的析构函数,销毁m2成员,输出’a’,再调用m1的析构函数,销毁m1成员,输出’a’;综上所述,程序运行的输出是:"qpBbaa";答案为D。
转载请注明原文地址:https://kaotiyun.com/show/QPfp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程中含有一个源程序文件proj2.cpp。其中定义了类Bag和用于测试该类的主函数main。类Bag是一个袋子类,用于存放带有数字标号的小球(如台球中用的球,在类中用一个整数值
给定程序中,函数fun的功能是将不带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2、4、6、8、10,逆置后,从头至尾结点数据域依次为10、8、6、4、2。请在程序的中括号处填入正确的内容并把中括号删除,使程序得出正确的结果。注意
有下列程序:#includevoidmain(){inta1,a2charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%d%c%d%c",a1
在下列原型所示的C++函数中,按"传值"方式传递参数的是()。
下列语句或语句序列中有语法错误的是
对于一个类定义,下列叙述中错误的是()。
有如下类定义classMyclasspublic:Private:intdata;};若要为Myclass类重载流输入运算符>>,使得程序中可以“cin>>obj;”形式输入Myclass类的
下列对于线性链表的描述中正确的是
随机试题
电子书阅读平台定期从内容资源库获取图书资源的下载方式是()。
在Excel中,选中活动工作表的一个单元格后执行“编辑”菜单中“清除”中的子命令,可以__。
可提高婴儿出生后局部免疫屏障的是
A、紧密结合临床B、内容广泛多样C、更新传递快速D、做到去伪存真E、提高药学水平冷静分析识别各种信息,开展EBDI是为了使药物信息()
根据《钢结构工程施工质量验收规范》规定,钢结构一级、二级焊缝不得有()等缺陷。
根据政府预算编制依据的内容和方法,可将政府预算分为()。
()被誉为“音乐化石”。
班会的特点主要有集体性、针对性和()。
如果想查广东以前各市、县发生的大事,从2008年起查,要用哪种检索方法?()
某用户在WWW浏览器地址栏内键入了一个URL:http://www.dlut.edu.cn/index.htm,其中“index.htm”代表_______。
最新回复
(
0
)