首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include<iostream> using namespace std; class A { public: A(){cout<<"A’;} ~A(){cout<<"~
有如下程序: #include<iostream> using namespace std; class A { public: A(){cout<<"A’;} ~A(){cout<<"~
admin
2013-02-27
81
问题
有如下程序: #include<iostream> using namespace std; class A { public: A(){cout<<"A’;} ~A(){cout<<"~A";} }; class B:public A { A*p; public: B(){cout<<"B";p=new A();} ~B(){cout<<"~B";delete p;} }; int main() { B obj; return 0; } 执行这个程序的输出结果是
选项
A、BAA~A~B~A
B、ABA~B~A~A
C、BAA~B~A~A
D、ABA~A~B~A
答案
B
解析
本题考查的是派生类对象的构造与析构。建立派生类对象时,构造函数的执行顺序如下:
(1)执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右);
(2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下);
(3)执行派生类的构造函数。
所以本题在建立派生类B的对象。obj时会先调用基类A的构造,然后调用自身的构造。注意:B类中定义的成员p是A类的指针而不是一个对象,故在调用自身构造函数前不需要构造。而在B类构造函数中使用new操作符动态构造了一个A类的对象,所以整个构造结果是输出:ABA。派生类对象的析构与构造严格相反,即先析构自身,然后析构自身所包含的成员对象,最后调用基类的析构函数。故本题中,当main()函数返回时,析构B类的对象obj:首先会调用~B(),接着再调用~A()。但是,在~B()函数中使用delete操作符释放了动态创建的A类对象,故整个析构所输出的结果是:~B~A~A。所以应该选择B。
转载请注明原文地址:https://kaotiyun.com/show/W7Vp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
若有定义:inta,b;,通过语句scanf("%d;%d",&a,&b);能把整数3赋给变量a、5赋给变量b的输入数据是()。
设有函数说明语句“intfun(int,int);”以及函数指针定义语句“int(*f)(int,int);”若要使函数指针指向函数fun的入口地址,以下选项中正确的是()。
有以下程序 #include<stdio.h> main() {inta[3][3]={{1,3,5,}, {7,9,11,}, {13,15,17}}; int(*p)[3]=a,i,j,n=0; fo
函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,函数不完整。 intfun(int*a,intn) {int*P,*s; for(p=a,s=a;p-a<n;p++) if(_____________
有以下程序(注:字符a的ASCII码值为97): #include<stdio.h> main() {char*s={"abe"}; do {printf("%d",*s%10); ++s: }whil
设有定义: structcomplex {intreal,unreal;}data1={1,8},data2; 则以下赋值语句中错误的是()。
下列叙述中错误的是()。
若有定义:inta=3;doubleb=0.1263;charch=’a’;,则以下选项中,叙述有错的是()。
假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数首部形式为【】。
已有函数max(a,b),为了使函数指针变量p指向函数max,则下面选项中赋值方法正确的是()。
随机试题
呈扁球形或圆锥形,断面可见棕色种皮与白色胚乳相间的大理石样花纹的药材是()。
消防水泵一般多为离心泵,采用()吸水方式。
结合自身的实际,谈谈影响人格形成的诸因素。
患者,女,23岁。干咳无痰、乏力2个月。X线胸片示肺门淋巴结肿大;PPD试验有红肿硬结,直径16mm,伴水疱。该患者最可能的诊断是
突发剧烈胸痛伴呼吸困难和发绀常见于
A、自身免疫性疾病B、细菌感染性疾病C、病毒感染性疾病D、碘缺乏性疾病E、遗传相关性疾病桥本甲状腺炎是
下列不是房屋建筑工程的基本组成部分的是()。
(),中国银监会发布了《中国银行业实施新资本协议指导意见》,标志着我国正式启动了实施《巴塞尔新资本协议》的工程。
央视发起“谁是家里顶梁柱”的调查,那么一个国家,一个民族,更需要顶梁柱,那谁称得起国家顶梁柱?请谈谈你对顶梁柱的看法。
A、Payforthemeal.B、Lookforherwallet.C、Quicklybuyanewwalletinastore.D、Comeoutjustassoonasshetakesherwalle
最新回复
(
0
)