首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include<iostream> class A { public: A(int n=2):m_i(n){} ~A(){std::cout<<m_i;} protected: int m_i; }; class B:public A {
有如下程序: #include<iostream> class A { public: A(int n=2):m_i(n){} ~A(){std::cout<<m_i;} protected: int m_i; }; class B:public A {
admin
2017-07-28
37
问题
有如下程序:
#include<iostream>
class A
{
public:
A(int n=2):m_i(n){}
~A(){std::cout<<m_i;}
protected:
int m_i;
};
class B:public A
{
public:
B(int n):m_a2(n),m_al(m_i+1){}
public:
~B()
{
std::cout<<m_i;
--m_i;
}
private:
A m_a1;
A m_a2:
};
int main()
{
B b(5);
return0;
}
运行后的输出结果是( )。
选项
A、2351
B、2531
C、5354
D、5534
答案
B
解析
main()函数中调用了B的构造函数,参数为5,接下来B类对象b的构造过程如下:
①调用基类A的默认构造函数,构造对象b的基类部分:初始化m_i为2。
②按照B类中成员的定义顺序,使用成员初始化列表初始化两个A类成员:首先执行m_a1(m_i+1),m_i为基类A中的成员,此时值为2,调用A类的默认构造函数,初始化m_a1.m_i为3;然后执行m_a2(n),调用A类的默认构造函数,初始化m_a2.m_i为5。接着main()执行return语句,此时对象b需要调用析构函数进行释放,释放过程如下:
①首先运行B类的析构函数~B(),输出m_i的值为2,然后将m_i自减1,使得m_i的值为1。
②按照B类中成员定义顺序的反顺序,首先调用m_a2的析构函数~A(),释放对象m_a2,输出m_a2.m_i的值5;再调用m_a1的析构函数~A(),释放对象m_a1,输出m_a1.m_i的值3。
③最后调用基类A的析构函数~A(),释放b对象中的基类部分,输出m_i的值1。
由上分析,程序运行结果为:2531。故本题答案为B选项。
转载请注明原文地址:https://kaotiyun.com/show/OFAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列关于线性表叙述中,不正确的是()。
以下不属于构造函数特征的是。
类中数据成员和成员函数的默认访问级别为______。
软件工程研究的内容主要包括______技术和软件工程管理。
______是C++语言程序的人口。
如果一个类中定义了成员对象,则该类的对象和成员对象先被初始化的是________。
派生类的对象对它的基类成员中()是可以访问的。
在C++语言中,数据封装要解决的问题是
下面不属于软件设计原则的是
两个或两个以上模块之间联系的紧密程度称为()。
随机试题
唐代提出“文章合为时而著,歌诗合为事而作”的创作主张的诗人是()
原发性高血压的最重要致病原因是
A.五味消毒饮B.龙胆泻肝汤C.仙方活命饮.D.银翘散E.五神汤合桃红四物汤
2018年7月2日,甲公司向乙公司订购一套价值150万元的精密仪器设备,双方签订了买卖合同,约定由乙公司代为托运。7月8日,甲公司为筹集购买精密仪器设备的贷款向丙公司借款100万元,双方签订了借款合同,约定借款期限3个月,由丁公司和戊公司分别提供担保。7月
物业服务企业在领取营业执照之日起30天内,持()企业法定代表人的身份证明等资料向当地的房地产主管部门申请资质。
简述公路运价的种类。
某社区居民老张向社区的社会工作者反映:“C社区的社区服务中心建得比我们社区的大,设备也齐全,活动也多,他们社区的居民平时都爱去服务中心,里面也热闹,我们社区的服务中心能不能借鉴一下他们的经验,整修一下?”老张的这种需要属于()。
(2016年泰安市直)教学评价就是对教学活动的结果进行价值评判的过程。
注:2006年北京市总人口数为1197.6万人,2007年为1213.3万人,2008年为1229.9万人。2008年北京市70岁及以上的老年人口占老年人口的比重比2007年多()个百分点。
近代法国中央集权式教育管理体制确立的标志是拿破仑第一帝国时期设立的()。(2011年)
最新回复
(
0
)