首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #include class A { public: A(int n=2):m_i(n){} ~A(){std::cout
有如下程序: #include class A { public: A(int n=2):m_i(n){} ~A(){std::cout
admin
2019-05-22
49
问题
有如下程序:
#include
class A
{
public:
A(int n=2):m_i(n){}
~A(){std::cout<
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;
}
private:
A m_a1;
A m_a2;
};
int main()
{
B b(5);
return 0;
}
运行后的输出结果是( )。
选项
A、2351
B、2531
C、5354
D、5534
答案
B
解析
main()函数中调用了B的构造函数,参数为5,接下来B类对象b的构造过程如下:①调用基类A的默认构造函数,构造对象b的基类部分:初始化mj为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_j的值为2,然后将m_i自减1,使得m_i的值为1。②按照B类中成员定义顺序的反顺序,首先调用m_a2的析构函数~A(),释放对象m_a2,输出m_a2.mj的值5;再调用m_a1的析构函数~A(),释放对象m_a1,输出m_a1.mj的值3。③最后调用基类A的析构函数~A(),释放b对象中的基类部分,输出m_i的值1。
由上分析,程序运行结果为:2531。故本题答案为B选项。
转载请注明原文地址:https://kaotiyun.com/show/XB8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
下列关于类、对象、属性和方法的叙述中,错误的是()。
外部变量在文件lCPP中的变量如果也要在文件2CPP中访问,那么该变量要声明为外部变量。
A、 B、 C、 D、 B此题考查的是虚函数的概念。在成员函数的声明前面加上virtual关键字,即可把函数声明为虚函数。虚函数可以是另一个函数的友元函数而不能是静态成员函数。
A、 B、 C、 D、 B本题考查数据库的关系运算。两个关系的并运算是指将第一个关系的元组加到第二个关系中,生成新的关系。因此,并运算不改变关系表中的属性个数,也不能减少元组个数。两个关系的交运算是包含同时出
A、 B、 C、 D、 A由于线性表采用的是顺序存储方式,用存储单元的邻接性体现线性表元素间的一维顺序关系,因此对线性表进行插入和删除运算时,可能需要移动大量的结点,以保持这种物理和逻辑的一致性。对于选项A)
在结构化分析使用的数据流图中,使用用__________解释其中的图形元素。
下列字符串中,正确的C++标识符是()。
下面字符串中,不可以用作C++标识符的是()。
下列符号中可以用作C++标识符的是()。
按照标识符的要求,下列选项中,()符号不能组成标识符。
随机试题
总的来说,公司的大规模生产通常与()的产品相联系。
导体的电阻与导体的长度关系为()。
为诊断的目的而行短时间单眼遮盖的情况有
引起牙髓疾病的物理因素,不包括
不属于儿科内治用药原则的是
银行业是一个信息对称程度很高的行业,在创新方面,信息对称程度更高。()
根据《湖北省旅游条例》的规定,旅游经营者具有哪些义务?
在加工信息的过程中倾向于依赖外界的环境和参照物,根据外界的情况作出自己的行为,这属于哪种认知方式?()
为了提高软件开发效率,开发软件时应尽量采用
A、400.B、450.C、500.D、600.D
最新回复
(
0
)