请打开考生文件夹下的解决方案文件proj2,其中的主程序文件main.cpp中定义有类XBase和XDefived,以及主函数main。程序文本中位于每行“//*********found*********”下面的一行内有一处下划线标记,请在每个下划线标记

admin2020-12-21  32

问题 请打开考生文件夹下的解决方案文件proj2,其中的主程序文件main.cpp中定义有类XBase和XDefived,以及主函数main。程序文本中位于每行“//*********found*********”下面的一行内有一处下划线标记,请在每个下划线标记处填写合适的内容,并删除掉下划线标记。
    经修改后运行程序,得到的输出结果为:61 29
    #include
    using namespace std;
    class XBase
    {
    private;
    int mem1,mem2;
    public:
    //用m1和m2分别初始化数据成员mem1和mere2
    //*******found*******
    XBase(int m1,int m2):mem1(m1),________{}
    //squareSum函数定义,返回两个数据成员平方之和
    //*******found*******
    virtual int squareSum()________
    };
    class XDerived:public XBase
    }
    private:
    int mere3;
    public:
    //利用m1和m2作为调用基类构造函数的实际参数
    //*******found*******
    XDerived(int m1,int m2,int m3):________,mere3(nd){}
    //*******found*******
    ________{return XBase::squareSum()+mere3*menr3;}
    };
    int main(){
    XDerived b(2,3,4);
    XBase a(5,6),*P;
    P=&a;
    cout<<P->squareSum()<<’’;
    P=&b;
    coat<<P->squareSum()<<endl;
    return 0;
}

选项

答案(1)mem2(m2) (2){return mem1*mem1+mem2*mem2;} (3)XBase(m1,m2) (4)int squareSum()或viftual int squareSum()

解析 (1)XBase类的构造函数使用成员初始化列表完成对mem1和mem2的初始化,代码为: XBase(int m1.int m2):mem1(m1),mem2(m2) (2)根据题意,XBast,类的成员函数squareSum要求返回两个成员变量mem1和mem2的平方之和,代码为:virtual int squareSum(){retutn mem1*mem1+mem2*mere2;}(3)XDerived类继承xBase,所以构造函数的成员初始化列表中首先要调用xBase的构造函数,完成基类的初始化,代码为:XDerived(int m1,int m2,int m3):XBase(m1,m2),mem3(m3)(4)XDerived类继承xBaste,然后重写了基类的虚函数squareNum,使XDerived的成员函数squareNum返回三个成员的平方和,直接调用基类的squareNum计算mem1和mem2的平方和,然后将返回值再累加mem3的平方和,代码如下:int squareSum(){return xBase::squareSum()+mem3*mem3;}或:virtual int squareSum(){return XBase::squareSum()+mem3*mere3;}
转载请注明原文地址:https://kaotiyun.com/show/Hdyp777K
0

最新回复(0)