首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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
29
问题
有如下程序
#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://jikaoti.com/ti/v1E0FFFM
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
以下程序的运行结果是#include<iostream.h>voidsub(intx,inty,int*z){*z=y-x;}voidmain(){inta,b,c;sub(
有以下程序:#include<iostream>usingnamespacestd;template<classT>classTAdd{private:Tx,y;p
某二叉树T有n个节点,设按某种顺序对T中的每个节点进行编号,编号值为1,2,…n,且有如下性质:T中任一节点v,其编号等于左子树上的最小编号减1,而v的右子树的节点中,其最小编号等于v左子树上的节点的最大编号加1。此二叉树是按()顺序编号的。
下列叙述中错误的是()。
类MyClass的定义如下:classMyClass{public:MyClass(){}MyClass(inti){value=newint(i);}i
在深度为5的满二叉树中,叶子结点的个数为
假设inta=1,b=2;,则表达式(++a/B)*b--的值为【】。
C++语言中标点符号中表示一条预处理命令开始的是
有关构造函数的说法不正确的是()。
下列有关指针的用法中错误的是()。
随机试题
质量监督工作按其性质、目的、内容和处理方法的不同可以分为
整个社会组织体系的基础是()
A.急性扁桃体炎B.淋病C.胃癌D.淋巴瘤颈部淋巴结肿大,质软,有压痛,表面光滑,无粘连多见于
A、溶质(1g或1ml)能在溶剂1~不到10m1中溶解B、溶质(1g或1ml)能在溶剂10~不到30ml中溶解C、溶质(18或1ml)能在溶剂30~不到100ml中溶解D、溶质(1g或1ml)能在溶剂100~不到1
佳佳和孙岩已经领了结婚证,还没有举行婚礼,也没同居。孙岩现在后悔与佳佳结婚,进行下列()行为婚姻关系才能解除。
神经衰弱者易激惹的典型发作形式是()。
根据所给资料,回答问题。2012年出口总额同比增速高于外商直接投资实际到位金额的城市有几个?
“风定花犹落,鸟鸣山更幽”这一诗句体现了()。
甲拾得乙遗失的戒指,拒绝向乙返还。试运用民法原理并结合我国有关法律规定分析乙对甲享有何种请求权?
用二维表结构表示实体以及实体间联系的数据模型为
最新回复
(
0
)