首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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
21
问题
有如下程序
#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/7LE0FFFM
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
对类的构造函数和析构函数描述正确的是
下面的哪个选项不能作为函数的返回类型?
已知有定义constintD=5;inti=1;doublef=0.32;charc=15;则下列选项错误的是
如果类中的一个成员函数的定义实现在类内,则该函数系统自动默认为该类的【】函数。
在进行了任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态,其中只能用于检测刚进行的操作是否失败函数名是
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是
下列有关内联函数的叙述中,正确的是
在关系数据库中,用来表示实体之间联系的是【 】。
耦合和内聚是评价模块独立性的两个主要标准,其中【】反映了模块内务成分之间的联系。
下列不是描述类的成员函数的是
随机试题
在党的路线、方针、政策的教育方面,必须使广大人民群众认识哪些问题?
工程施工合同计价类型有哪些?
功能性开关电器可采用下列选项中的()。
应待结束应明确(),事故现场得以控制,环境符合有关标准,导致的次生、衍生事故隐患消除后,经事故现场应急指挥机构批准后,现场应急结束。
对于普通诉讼时效,我国民法通则规定向人民法院请求保护民事权利的诉讼时效期间为()。
甲因盗窃罪被捕,在侦查人员对其审讯期间,他又交代了自己和李某合伙诈骗4万元的犯罪事实,并提供了李某可能隐匿的地点,根据这一线索,侦查机关顺利将李某追捕归案。对甲盗窃罪的处罚,下列哪一项是正确的?()。
如图所示,三角形ABC内的线段BD,CE相交与点O,已知OB=OD,OC=2OE,若△BOC的面积为2,则四边形AEOD的面积等于().
下列各组设备中,完全属于外部设备的一组是______。
Gettysburgwasthe______ofthemostimportantbattleinAmericanCivilWar.
A、Thegovernmentofficials.B、Thefactoryowners.C、Thecriminals.D、Thepoorandimmigrants.D
最新回复
(
0
)