第11周 程序阅读——继承和派生(3)

来源:互联网 发布:网络视频监控施工方案 编辑:程序博客网 时间:2024/05/01 09:16

问题描述:

阅读程序,请写出这些程序的运行结果

#include<iostream>using namespace std;class  A{private:    int  x;protected:    int y;public:    int z;    A(int a,int b,int c)    {        x=a;        y=b;        z=c;    }    int  Getx()    {        return x;    }    int  Gety()    {        return y;    }    void ShowA()    {        cout<< "x="<<x<<'\t';        cout<<"y="<<y<<'\t';        cout<<"z="<<z<<'\n';    }};class B:public A   //修改点(见后面阅读要求){private:    int m,n;public:    B(int a,int b,int c,int d,int e):A(a,b,c)    {        m=d;        n=e;    }    void Show()    {        cout<<"m="<<m<<'\t'<<"n="<<n<<'\n';        cout<<"x="<<Getx()<<'\t';        cout<<"y="<<y<<'\t'<<"z="<<z<<'\n';    }    int Sum()    {        return (Getx()+y+z+m+n);    }};int main(){    B b1(1,2,3,4,5);    b1.ShowA();    b1.Show();    cout<< "Sum="<<b1.Sum()<<'\n';    cout<<"x="<<b1.Getx()<<'\t';    cout << "y=" <<b1.Gety()<<'\t';    cout << "z="<<b1.z<<'\n';    return 0;}

先阅读程序,写出你预想的运行结果,再记录运行结果,如果两者有差异,再读程序给出解释。
观察基类A中成员的访问权限制以及派生类B中对这些成员的访问方法。
请将class B:public A 中的public改为protected或者删除,对程序进行编译,解释出现的情况。

预计运行结果:

x=1y=2 z=3

m=4n=5

x=1y=2z=3

sum=15

x=1y=2 z=3

实际运行结果:

修改后:

原因:因为是私有继承所以成员函数不能在类外访问,所以错误!



0 0
原创粉丝点击