首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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
18
问题
有如下程序
#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/ZVNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
若有以下程序:#include<iostream>usingnamespacestd;classA{private:inta;public:
考虑下面的函数原型:voidf(inta,intb=7,charc=’@’);下面的函数调用中,不合法的是
下列叙述中正确的是
下列叙述中正确的是
在结构化设计方法中生成的结构图(SC)中,带有箭头的连线表示
在面向对象的程序设计中,下列叙述中错误的是
在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是
下列选项中不属于软件生命周期开发阶段任务的是
具有3个结点的二叉树有
随机试题
女,63岁,小脑梗死后2周,右上肢不能平稳完成动作,伴有震颤,步行时步幅大,足着地轻重不等,伴有摇摆。针对该患者协调功能的检查不包括
患者,女,41岁。既往有胆结石,晚餐后突然出现中上腹痛,阵发性加剧,频繁呕吐,呕吐物含胆汁,呕吐后腹痛未减轻,化验血淀粉酶为2500U/L,于今日住院治疗。饮食护理应为
查体可见患者上腹部蠕动波自左向右移动。考虑患者可能的情况是
上题中,若XL=R=10Ω,以I1为参考相量,则电压为()V。
建设单位延期发出图纸,承包方()。
汉译英:“公司”,正确的翻译为()。
下列属于违反治安管理行为特征的有()
Thehumanbeinglongsforasenseofbeingaccomplished,ofbeingabletodothings,withhishand,withhismind,withhiswill
环回接口是一种应用最为广泛的虚接口,其接口号的有效值为()。
A、There’sapaperbythedoor.B、Thepapermusthaveblownaway.C、Heshouldlookfurtherunderthedesk.D、Hecanbuyanothero
最新回复
(
0
)