首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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
2015-07-22
50
问题
有如下程序
#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/EMNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
设变量a是int型,f是double型,i是float型,则表达式10+’a’+i*f值的数据类型
面向对象程序设计思想的主要特征中不包括
有以下程序:#include<iostream>usingnamespacestd;classCSample{private:inti;public:CSample(
下列关于链式存储的叙述中,错误的是()。
某二叉树T有n个节点,设按某种顺序对T中的每个节点进行编号,编号值为1,2,…n,且有如下性质:T中任一节点v,其编号等于左子树上的最小编号减1,而v的右子树的节点中,其最小编号等于v左子树上的节点的最大编号加1。此二叉树是按()顺序编号的。
对于模板定义关键字class和typename说法不正确的是()。
如果一个模板声明时有类型形参表,则多个参数之间必须使用______隔开,每个参数都必须重复使用关键字______。
设有intx=11;,则表达式(x++*2/3)的值是
设有以下变量定义,并已赋确定的值:charw;intx;floaty;doublez;则表达式:w*x+z-y所求得的数据类型为()。
下列有关指针的用法中错误的是()。
随机试题
凡用来对零部件施加外力,使其获得正确定位或定位后夹紧不产生位移的工艺装备,统称为夹具。
新建表格时,表格的边框线以虚线画出,在打印时______显示出来。
A.α受体阻滞剂B.β受体阻滞剂C.利尿剂D.钙通道拮抗剂E.血管紧张素转换酶抑制剂男性,75岁。高血压病20余年,有哮喘和痛风病史,最近出现轻度充血性心衰症状。最不宜选择的药物为
维生素A主要影响视网膜内_______,因而出现夜盲症()。
民族自治地方享有广泛的自治权,表现在民族自治机关可以:()。
集中式城市布局的空间结构形态包括以下()类。
客户维持担保比例不得低于( )。
下列关于金融资产的说法中,错误的是()。(2012年)
升学考试体现了什么评价方式?()
CriticsoftheWrightbrothersthoughtthattheideaofaflyingmachinewastotallypreposterous.
最新回复
(
0
)