首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序 #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-02-22
44
问题
有如下程序
#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://www.kaotiyun.com/show/Rbfp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
数据流程图(DFD图)是
在软件设计中,不属于过程设计工具的是
有如下函数模板:templateTcast(Uu){returnU;}其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是()。
已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则()。
使用VC6打开考生文件夹proj2下的工程proj2,其中有两个类:一是销售类(sale),用于表示按照一件商品的基本价格进行销售;另一个是打折销售类(DiscountSale),用于表示在基本价格基础上按一个折扣比例进行销售。DiscountSale类继
下列关于new和delete运算符的叙述中,错误的是()。
语句int*p=&k;定义了指针p,与这个语句等效的语句序列是()。
在函数中,可以用auto、extem、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是()。
下列字符串中不能作为C++标识符使用的是()。
随机试题
下列肿瘤最易发生肝转移的是
危险药物的危险性主要表现在
脊椎压痛叩击痛不常见于( )
在乙型肝炎患者血清中。不能检测到的乙肝病毒标记物是
根据不同的划分标准,公司可分为各种不同的类型。其中,按公司股票是否上市流通为标准,可将公司分为上市公司和非上市公司。()
甲拥有一土地使用权,其中的40%自用,另60%出租给乙生产经营使用,则()。
某建设项目投资1000万元,第一年为建设期,此后从第二年年末开始每年将有200万元的净收益,方案的运营期为10年,寿命期结束时的净残值为零,若基准收益率为12%,则该项目的年净收益为()时,净现值为零。已知:(P/A,12%,10)=5.650,(
最早提出“教育要适应儿童的年龄阶段,进行和谐发展”的教育思想家是()
有三个关系R,S和T如下图所示:则由关系R和S得到关系T的操作是
Whatpoliticianscherishmostisthebenefitsoftheirparties.Theunderlinedpartmeans______.
最新回复
(
0
)