首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #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
62
问题
有如下程序:
#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://www.kaotiyun.com/show/OFAp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
十进制28和3.26的类型分别是【 】。
下列有关内联函数的叙述中,正确的是()。
非成员函数只有在声明为(),才能访问这个类的所有private成员。
假设为循环队列分配的向量空间为Q[20],若队列的长度和队头指针值分别为13和17,则当前尾指针的值为【 】。
下列选项,不正确的是
下列关于数据库系统的叙述中,正确的是()。
在关系模型中,一个关系的属性名表称为【 】,也就是二维表的表框架,相当于记录型。
在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是,
下面不属于软件设计原则的是
按照标识符的要求,下列选项中,()符号不能组成标识符。
随机试题
男婴7个月,腹泻2天,大便每日12~15次,蛋花汤样,精神萎靡,眼泪少,尿少,血钠138mmol/乙皮肤弹性差。其脱水的程度和性质是
A.乳糜微粒B.极低密度脂蛋白C.低密度脂蛋白D.高密度脂蛋白E.清蛋白
慢性阻塞性肺气肿的体征不包括
下列有权签发进出口许可证的机构是()。
材料:语文课上,有个学生总是喜欢跟周围同学讲话,交头接耳。语文老师多次提醒、制止,但还是无济于事。时间长了,语文老师开始责骂、讥讽、奚落他,有时候也惩罚他。渐渐地,这个学生越来越不喜欢上语文课,对语文老师产生了极度的厌恶感,最后出现了厌学情绪。家长找老师
演唱会必须如期举行,除非明天下雨或者是演唱会门票卖得很少。只有演唱会取消,才会退还已经买票的观众全部的购票现金。结果有购买了门票的观众顺利退票,并得到了全部的购票现金。如果以上论述是正确的。那么下列哪个也一定是正确的?
下列选项属于班级管理常用的模式有()。
根据下面材料回答下列题。2008年,山东省居民消费价格分月指数大于当年居民消费价格指数的有()个月。
A、 B、 C、 D、 B
拥有计算机并以拨号方式接入Internet网的用户需要使用()。
最新回复
(
0
)