首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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
2021-05-06
20
问题
有如下程序
#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(charch),用ch初始化成员c后输出成员c的值,即输出’q’、’p’,再执行类BB的函数体,输出’B’;程序执行结束时,系统会自动调用类的析构函数清理自己的成员,析构函数工作过程:
1、执行析构函数的函数体;
2、如果该类中拥有类对象成员,且类对象有析构函数,则以类对象成员声明次序的相反顺序调用其析构函数,销毁类对象成员;
3、按原来构造顺序的相反顺序向上依次调用基类的析构函数。
所以程序运行结束时,首先调用BB的析构函数并执行函数体,输出"b";然后调用m2的析构函数,销毁m2成员,输出’a’,再调用m1的析构函数,销毁m1成员,输出’a’;综上所述,程序运行的输出是:"qpBbaa";答案为D。
转载请注明原文地址:https://kaotiyun.com/show/QPfp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有如下程序:#include#includeusingnamespacestd;classTV{public:TV(ints=41):size(
下面是重载为非成员函数的运算符函数原型,其中错误的是
下列选项中,不是C++关键字的是
请使用“答题”菜单或使用VC6打开考生文件夹下的工程proj3,其中定义了Septinary类(七进制类),来表示一个七进制的数及其相关操作。和十进制的数“逢十进一”类似,七进制的数定义为“逢七进一”。这里对Septinary类的数据成员做一下说明:c
为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。
下列关于C++函数的说明中,正确的是()。
在对函数进行原型声明时,下列语法成分中,不需要的是()。
在表达式x+y*z中,+是作为成员函数重载的运算符,木是作为非成员函数重载的运算符。下列叙述中正确的是()。
一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为
随机试题
肾精耗竭可致
单剂量大于0.5g的药物不宜制备
酶制剂应储存于( )。
根据《建筑工程工程量清单计价规范》,工程量清单的组成不包括()。
下列关于证券公司融资融券业务客户担保物的说法,不正确的是()。
下列属于缺货成本的是()。
六十多年的实践证明,人民政协作为中国特色社会主义民主政治建设的伟大创造,积极投身中华人民共和国建设和改革的伟大实践,走过了辉煌的历程,建立了历史的功勋,发挥了不可替代的历史作用。下列对人民政协的优势表述正确的有()。①人才荟萃,能够深人研究一些重
Togetdrugsfromthepharmacy,youneeda(n)______.
抽象逻辑思维
设A=,|A|>0且A*的特征值为一1,一2,2,则a11+a22+a33=___________.
最新回复
(
0
)