首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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
33
问题
有如下程序
#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全国计算机二级
相关试题推荐
关于this指针的说明不正确的是
C++语言是以哪种语言为基础逐渐发展演变而成的一种程序设计语言
下列关于链式存储的叙述中,错误的是()。
对于模板定义关键字class和typename说法不正确的是()。
以下for语句中不是死循环的是
开发软件时对提高开发入员工作效率至关重要的是
有关构造函数的说法不正确的是()。
如下图所示的4棵二叉树中,不是完全二叉树的是()。
随机试题
________。基层不稳,天下也会难安。而基层治理的清明,不仅关乎每一个个体的福祉,也是转型期经济社会健康有序发展的必要条件。有鉴于此,当务之急既要严厉查处一个个具体的案例,务必在每一个个案中让民众感受到公平公正;也要立足长效机制,强化制度的建设与落实,
某曲线在(x,y)处的切线斜率满足y’=,且曲线通过(1,1)点,(1)求y=y(x)的曲线方程;(2)求由y=1,曲线及y轴围成区域的面积;(3)上述图形绕y轴旋转所得的旋转体的体积.
鉴别M1和M5型急非淋白血病常选用下列哪种细胞化学染色A.PSAB.NAS-DCEC.POXD.NAPE.SBB
患儿,男,8岁,上前牙外伤折断1小时。局部检查左上中切牙冠斜折,切角缺损,牙髓暴露,触痛明显,松(一)。检查中最有可能发现的情况是
确诊前列腺癌最可靠的方法是
A、 B、 C、 D、 B原数列可以变型为:。可以看出分子是公差为8分子的等差数列,所以下一个为44/216,选B。
根据图1,下列说法错误的是( )。根据图1、图2,下列说法不正确的是( )。
Computerwillbecomemoreadvancedandtheywillalsobecomeeasiertouse.Improvedspeedrecognitionwillmaketheoperationof
Theforeignerasks,“Canyoutellmethewaytothebank?”Theforeignerasksme______himthewaytOthebank.
A、Itisaheavybox-type.B、Thereisabigscratchatthefront.C、Thecolourisgolden.D、Itsbrandnameisontheback.D①选项描述
最新回复
(
0
)