首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序: #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
42
问题
有如下程序:
#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全国计算机二级
相关试题推荐
在重载一个运算符函数时,其参数表中没有任何参数,这说明该运算符是()。
考虑一年四季的顺序关系时,下列数据元素前者不是后者前件的是()。
若a. b和c均是int型变量,则表达式a=(b=4)+(c=2)执行后,a的值为【 】。
在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则( )。
设a,b,c都是int的变量,且a=3,b=4,c=5,则下面的表达式中值为0的是( )
有如下程序:#include<iostream>usingnamespacestd;classPARENT{public:PARENT(){cout<<"PARENT";}
语句ofstreamf("SALARY.DAT",ios::applios::binary);的功能是建立流对象f,试图打开文件SALARY.DAT并与之连接,并且
在深度为4的满二叉树中,叶子结点的个数为【 】。
以下选项中合法的用户标识符是
在下面函数的横线处填上适当的内容,使该函数能够利用递归方法求解字符串str的长度(不得使用系统提供的字符串处理函数)。intGetLen(char*str){if(______)return______;e
随机试题
处理机操作步骤并行的典型例子是()
明末因抗清而牺牲的少年诗人是()
社会产品必须是一定时期内的()
若3阶矩阵A=的秩为2,则a=().
某刺绣厂女工李某因其绣工好,深受客户喜爱。许多爱刺绣的客户慕名前来向其定作绣品。某年,港商向其一次性订购10幅绣品,每幅1000元,言明1年后取货,并预付了5000元定金。李某因当年家中杂事太多,就把活儿分给本厂几名女工合干,言明到时货钱平分。1年后,货款
为行气消胀之要药,燥湿除满之佳品的是( )。
下列选项中,属于个人贷款定价的一般原则的有()。
【丝绸之路】江西师范大学2011年历史地理学复试真题;中国社科院2014年边疆史复试真题
简要分析科尔伯格的道德认知发展理论的主要方法——道德两难问题讨论法。
Youcanhave______paiddirectfromyouraccount.
最新回复
(
0
)