您的位置:首页 > 其它

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

2013-05-23 18:15 851 查看
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的在派生类内可以访问,在派生类外不可以访问。


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐