首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #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
23
问题
有如下程序:
#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://jikaoti.com/ti/Ymt0FFFM
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有如下程序:#include<iostream>usingnamespacestd;classXX{protected:intk;public:XX(int
软件工程管理的具体内容不包括对( )管理。
以下不属于构造函数特征的是。
插入排序算法的主要思想:每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置。Insert类的成员函数sort()实现了插入排序算法,请填空。classInsert{public:Insert(int*b0,
下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回false。请在横线处填上适当内容,实现该函数。Boo1fun(char*str){inti=0,j=0;while(str[j]j++;f
C++语言本身没有定义I/O操作,但I/O操作包含在C++实现中。C++标准库iostream提供了基本的I/O类。I/O操作分别由两个类istream和()提供。
下列程序的运行结果是()。#include< iostream.h>voidfun(int*a,int*b){int*kk=a;a=b;b=k}voidmain(){inta=2004,
程序设计语言的基本成分是数据成分、运算成分、控制成分和
数据库DB、数据库系统DBS和数据库管理系统DBMS这三者之间的关系是()。
随机试题
教育对经济发展的促进功能表现为()
A、黄体囊肿B、多囊卵巢C、黄素囊肿D、浆液性囊腺瘤E、巧克力囊肿与月经调节机制异常有关的病变是
慢性唇炎发病的重要原因是()。
有关投标文件的修改或撤回,下列说法中正确的是()
(2006年)容积为2m3的储气罐内盛有t1=20℃、p1=500kPa的空气[已知:cp=1.005kJ/(kg.K),R=0.287kJ/(kg.K)]。若使压力提高到p2=1MPa,空气的温度将升高到()℃。
道教宫观一般由()四部分组成,布局多为传统的院落式。
在已给的椭球面内一切内接的长方体(各边分别平行坐标轴)中,求其体积最大者。
6个顶点的无向固至少应该有(48)条边才能保证是一个连通图。
假定窗体上有一个标签,名为Label1,为了使该标签透明并且没有边框,则正确的属性设置为()。
SpeakerA:Hello.MayIspeaktoSally,please?SpeakerB:________
最新回复
(
0
)