问答题
使用VC6打开考生文件夹proj2下的工程proj2。其中在编辑窗口内显示的主程序文件中定义有类XBase和XDerived,以及主函数main。程序文本中位于每行"//**********found**********下面的一行内有一处或多处下划线标记,请在每个下划线标记处填写合适的内容,并删除掉下划线标记。经修改后运行程序,得到的输出结果为:s=25#include<iostream>using namespace std;class XBase{ private: int mem1,mem2; public: //**********found********** XBase(int m1=0,int m2=0):meml(m1),_________{} //**********found********** virtual int__________};//**********found**********class XDerived:__________{ private: int mere3; public: XDerived():XBase(),mere3(0){} //**********found********** XDerived(int ml,int m2,int m3):__________{} int sum(){return XBase:slim()+mem3;}};void main(){ XDerived b(3,4,5); XBase a(6,7),*pb=&b; int S=pb->sum()+a.sum(); cout<<"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)XDerired公有继承XBase类,在继承列表中使用public。 (4)在成员初始化列表中初始化基类成员时,需要调用基类的构造函数,初始化mem3时,可以直接初始化。