第十三周上机任务项目1-理解基类中成员的访问限定符和派生类的继承方式

来源:互联网 发布:淘宝客户关系管理导出 编辑:程序博客网 时间:2024/06/05 19:16
01./*     02.* 程序的版权和版本声明部分     03.* Copyright (c)2013, 烟台大学计算机学院学生     04.* All rightsreserved.     05.* 文件名称:student .cpp                                06.* 作    者:赵冠哲                                 07.* 完成日期:2012年5月23日     08.* 版本号: v1.0           09.* 输入描述:     10.* 问题描述:   11.*/    #include <iostream>using namespace std;class StudentA //(1)修改studentA类中各数据成员和成员函数的访问限定符,并观察发生的现象{public:    StudentA(int n,string nam,char s);    void showA();    ~StudentA( ) { }protected:    int num;    string name;    char sex ;};class StudentB: public StudentA //(2)修改此处的继承方式,并观察发生的现象{public:    StudentB(int n,string nam,char s,int a,string ad);    void showB( );    ~StudentB( ) { }private:    int age;    string addr;};StudentA::StudentA(int n,string nam,char s){    num=n;    name=nam;    sex=s;}void StudentA::showA(){    cout<<"num: "<<num<<endl;    cout<<"name: "<<name<<endl;    cout<<"sex: "<<sex<<endl<<endl;}StudentB::StudentB(int n,string nam,char s,int a,string ad):StudentA(n,nam,s){    age=a;    addr=ad;}void StudentB::showB( ){    cout<<"num: "<<num<<endl;    cout<<"name: "<<name<<endl;    cout<<"sex: "<<sex<<endl;    cout<<"age: "<<age<<endl;    cout<<"address: "<<addr<<endl<<endl;}int main( )  //(3)思考由于访问限定符和继承方式的改变,会引发什么现象的发生,并作出解释{    StudentB stud1(10010,"Wang-li",'f',19,"115 Beijing Road,Shanghai");    StudentB stud2(10011,"Zhang-fun",'m',21,"213 Shanghai Road,Beijing");    StudentA stud3(20010,"He-xin",'m');    stud1.showB( );    stud2.showA( );    stud3.showA( );    return 0;}修改studentA类,将protected改为public后,显示的是无错误。修改studentA类,将protected改为private后,显示的是有错误:D:\12\main.cpp|10|error: 'int StudentA::num' is private|。修改B类的继承方式,将public改为protected后,显示的是有错误:D:\12\main.cpp|39|error: 'StudentB::StudentB(int, std::string, char, int, std::string)' is protected|修改B类的继承方式,将public改为private后,显示的是有错误:D:\12\main.cpp|39|error: 'StudentB::StudentB(int, std::string, char, int, std::string)' is private|总结:public的在派生类内外均可使用,private的在派生类内可以访问,在派生类外面不可以访问,protected的在派生类内可以访问,在派生类外不可以访问。


运行结果: