第十一周阅读程序(补充)----(2)改变继承类型

来源:互联网 发布:toblerone淘宝 编辑:程序博客网 时间:2024/06/01 12:56

问题及代码:

将继承类型改为protected 或者private 类型


/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:zwj.cpp *作    者:张伟晶 *完成日期:2016年5月10日 *版 本 号:v1.0 * *问题描述:阅读程序 *输入描述: *程序输出: */#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:protected 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;}

错误提示:


分析:

继承类型改变后访问权限改变了,注释掉部分的代码没有权限了,会出错。




注意!!!!!!!!!

如果是保护继承,为什么b1.showA 不对????????????????


答:::::保护继承,showA 是基类的公有成员,保护继承后,就成了B类的保护成员,用户无法对保护成员操作,保护成员相当于私有成员。

1 0