请打开考生文件夹下的解决方案文件proj2,其中在编辑窗口内显示的主程序文件中定义有类XBase和XDerived,以及主函数main。程序文本中位于每行"//**********found**********下面的——行内有一处或多处下划线标记,请在每个下划线标记处填写合适的内容,并删除掉下划线标记。经修改后运行程序,得到的输出结果为:s=25
#include<iostream>
using namGspacG std;
class XBase
{
private:
int mem1,mem2;
public:
//*****found*****
XBase (int m1=0,int m2=0):mem1(m1),___________{}
//*****found*****
Virtual int___________
};
//*****found*****
class XDerived:
{
private:
int mem3;
public:
XDerived():XBase(),mem3
(0){}
//*****found*****
XDerived(int m1,int m2,int m3):___________{}
int sum() {return XBase::
sum()+mem3;}
};
void main(){
XDerived b(3,4,5);
XBase a(6,7), *pb=&b;
int s=pb->sum()+a.sum
();
tout<<"s="<<s<<endl;
}
【正确答案】(1)mem2(m2)
(2)sum(){return mem1+mem2;}
(3)public XBase
(4)XBase(m1,m2),mem3(m3)
【答案解析】(1)题意要求使用m1和m2初始化数据成员mem1和mem2,同mem1的初始化一样,需要在成员初始化列表中完成mem2的初始化。
(2)sum函数的定义需要返回mem1和mem2之和。
(3)XDerived公有继承XBase类,在继承列表中使用public。
(4)在成员初始化列表中初始化基类成员时,需要调用基类的构造函数,初始化mem3时,可以直接初始化。