首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #iinc1ude <iostream> us:ing namespace std; c1assA { public: AO{cout<<"A";} ~AO{cout<<"~A";}
有如下程序: #iinc1ude <iostream> us:ing namespace std; c1assA { public: AO{cout<<"A";} ~AO{cout<<"~A";}
admin
2020-04-07
41
问题
有如下程序:
#iinc1ude <iostream>
us:ing namespace std;
c1assA
{
public:
AO{cout<<"A";}
~AO{cout<<"~A";}
};
c1ass B:public A
{
A*p;
public:
B(){cout<<"B";p=new A();}
~B(){cout<<"~B";delete p;}
};
int main()
{
B obj;
return ();
}
执行这个程序的输出结果是( )。
选项
A、BAA~A~B~A
B、ABA~B~A~A
C、BAA~B~A~A
D、ABA~A~B~A
答案
B
解析
此题考查的是派生类对象的构造与析构。建立派生类对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被定义时声明的顺序(自左向右)—>执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序—>执行派生类的构造函数。所以本题在建立派生类B的对象obj是会先调用基类A的构造函数,然后调用自身的构造函数。注意:B类中定义的成员p是A类的指针而不是一个对象,故在调用自身构造函数前不需要构造。而在B类构造函数中使用new操作符动态地构造了一个A类的对象,所以整个构造结果是输出:ABA。派生类对象的析构与构造严格相反,即先析构自身,然后析构自身所包含的成员对象,最后调用基类的析构函数。故本题中当main()函数返回时,析构B类的对象obj:首先调用~B(),接着再调用~AO因为在~B()函数中释放了动态创建的A类对象,故整个析构所输出的结果是~B~A~A。所以这个程序输出结果为ABA~B~A~A。
转载请注明原文地址:https://kaotiyun.com/show/Xt8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
设变量a是int型,f是double型,i是float型,则表达式10+’a’+i*f值的数据类型是
在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是
非成员函数只有在声明为类的【】才能访问这个类的所有private成员。
下列关于纯虚函数与抽象类的描述中,错误的是()。
已知intDBL(intn){returnn+n;}和longDBL(longn){returnn+n)是一个函数模板的两个实例,则该函数模板的定义是【】。
有如下程序#include<iostream.h>intfunc(inta,intb){return(a+b);}voidmain(){intx=2,y=5,
定义如下变量:charone_char;,则语句cout<<one_char;显示结果相当于C语言中的()语句。
在数据库系统中,用户所见的数据模式为
在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。
下述关于数据库系统的叙述中正确的是
随机试题
前列腺增生最早出现的症状是
在自身免疫病的基本特征中,不确切的说法是
A.病变在回肠下端B.病变主要在结肠C.病变主要在小肠D.病变主要在直肠E.病变主要在盲肠霍乱()
账户余额的方向一般与()的方向一致。
企业网上银行业务能为企业客户提供()等银行业务。
劳动卫生一般包括()。
课程是各级各类学校为实现培养目标而规定的_____及其进程的总和。在我国,课程的具体表现形式为_____、课程标准和教材。
行政领导作为一种行为,是指在一定的行政环境下,为实现一定的行政目标,行政领导者对被领导者所进行的统御、率领和引导的行为过程。根据上述定义,下列不属于行政领导的是()。
关于我国人民调解制度,下列说法正确的是()。
"Projectgold"and"ProjectNexus"soundlikeplansforbankrobberiesofmilitaryattacks.Inreality,theyarethenamesforK
最新回复
(
0
)