首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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
59
问题
有如下程序
#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全国计算机二级
相关试题推荐
下列选项中,不属于模块间耦合的是
以下定义数组中错误的是
下列叙述中错误的是()。
()不是构造函数的特征。
测试的目的是暴露错误,评价程序的可靠性;而【】的目的是发现错误的位置并改正错误。
下面程序错误的语句是 #include"iostream.h" ①voidmain() ②{ ③intA=0; ④int&B; ⑤B=A; ⑥cout<<B; ⑦
C++语言中标点符号中表示一条预处理命令开始的是
深度为m的满二叉树共有【】个节点。
如下图所示的4棵二叉树中,不是完全二叉树的是()。
有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是structnode{chardata;structnode*next;}a,b,*p=&a,*q=&b
随机试题
试确定α的值,使下列函数与xα当x→0时为同阶无穷小量:
TomarrivedatthebusstationquiteearlyforParisbus.ThebusforPariswouldnotleaveuntilfivetotwelve.Hesawaloto
龋的临床表现是
寸口诊脉法最先出现在
裁量补偿
《监理工程师资格证书)的持有者,自领取证书起,( )未经注册,其证书无效。
基金财产的债务由基金财产本身承担,基金份额持有人以()为限对基金财产的债务承担责任。但基金合同依照本法另有约定的,从其约定。
商业银行应根据规定建立健全个人理财人员资格考核与认定、继续培训、跟踪评价等管理制度,保证个人理财业务人员每年的培训时间不少于()。
168,183,195,210,()。
ManypeopleinvestinthestockmarkethopingtofindthenextMicrosoftandDell.However,Iknow【C1】______personalexperienc
最新回复
(
0
)