zoukankan      html  css  js  c++  java
  • 虚基类——(1)定义人员类Person: 公有成员:姓名(Name); 保护成员:性别(Gender),年龄(Age); 构造函数和析构函数

    题目描述:

    (1)定义人员类Person:
    公有成员:姓名(Name);
    保护成员:性别(Gender),年龄(Age); 

    构造函数和析构函数 

    (2) 从人员类Person派生学生记录类StudentRecord:
    添加公有成员:学号(Number),班级(ClassName),
    添加静态公有成员:学生总人数(TotalCount);
    添加保护成员:平均成绩(Score);
    实现构造函数和析构函数。
    (3) 从人员类Person派生教师记录类TeacherRecord:
    添加公有成员:学院(CollegeName),系(DepartmentName);
    添加保护成员:教龄(Year);
    实现构造函数和析构函数。 

    (4)从学生记录类StudentRecord和教师记录类TeacherRecord派生学生助教类TeachingAssistant:
    添加公有成员:辅导课程(LectureName);
    实现公有函数:显示人员信息(Show),屏幕打印 姓名,性别,年龄,学号,班级,学生总人数,平均成绩,学院,系,教龄,辅导课程。
    实现构造函数和析构函数。为检验类间结构设计是否正确,设计函数void SetName(String name)实现更改一名助教的姓名的功能。

    创建一个助教类的对象

    助教
    姓名 性别 年龄 学号 班级 平均成绩 学院 系 教龄 辅导课程
    郑七 男 22 2010123 软20101 89         信息 软件    1 数据结构
    显示其信息。

    调用更改姓名的函数,更改其姓名为“郑八”,并再次显示其信息。

    输入

    输出

    显示构造的信息和更改前和更改后的助教信息

    样例输入

     

    样例输出

    Person郑七constructed
    Student郑七constructed
    teacher郑七constructed
    teachingassistant郑七constructed
    Name:郑七 Gender:男 Age:22 Number:2010123 ClassName:软20101 TotalCount:1 Score:8
    9 CollegeName:信息 DepartmentName:软件 Year:1 LectureName:数据结构
    Name:郑八 Gender:男 Age:22 Number:2010123 ClassName:软20101 TotalCount:1 Score:8
    9 CollegeName:信息 DepartmentName:软件 Year:1 LectureName:数据结构
    teachingassistant郑八destructed
    teacher郑八destructed
    Student郑八destructed
    Person郑八destructed

    提示

    各类的构造函数和析构函数都有输出。

    调用公有函数Show,以分别显示各个记录的人员信息。

    在派生助教类时,使用虚基类。

    #include <iostream>
    #include <string>
    using namespace std;
    
    class Person
    {
    protected:
        string Gender;
        int Age;
    public:
        string Name;
        Person(string _Name="郑七",string _Gender="",int _Age=22)
        {
            Name=_Name;
            Gender=_Gender;
            Age=_Age;
            cout<<"Person"<<Name<<"constructed"<<endl;
        }
        ~Person()
        {
            cout<<"Person"<<Name<<"destructed"<<endl;
        }
    };
    class StudentRecord:virtual public Person
    {
    public:
        int Number;
        string ClassName;
        int TotalCount;
    protected:
        int Score;
        StudentRecord(string _Name="郑七",string _Gender="",int _Age=22,int _Number=2010123,string _ClassName="软20101",int _TotalCount=1,int _Score=89):Person(_Name,_Gender,_Age),TotalCount(_TotalCount)
        {
            Number=_Number;
            ClassName=_ClassName;
            Score=_Score;
            cout<<"Student"<<Name<<"constructed"<<endl;
        }
        ~StudentRecord()
        {
            cout<<"Student"<<Name<<"destructed"<<endl;
        }
    };
    class TeacherRecord :virtual public Person
    {
    public:
        string CollegeName;
        string DepartmentName;
    protected:
        int Year;
        TeacherRecord(string _Name="郑七",string _Gender="",int _Age=22,int _Number=2010123,string _CollegeName="信息",string _DepartmentName="软件",int _Year=1):Person(_Name,_Gender,_Age)
        {
            {
                CollegeName=_CollegeName;
                DepartmentName=_DepartmentName;
                Year=_Year;
                cout<<"teacher"<<Name<<"constructed"<<endl;
            }
    
        }
        ~TeacherRecord()
        {
            cout<<"teacher"<<Name<<"destructed"<<endl;
        }
    };
    
    class TeachingAssistant:virtual public StudentRecord,virtual public TeacherRecord
    {
    public:
        string LectureName;
        TeachingAssistant(string _LectureName="数据结构",string _Name="郑七",string _Gender="",int _Age=22,int _Number=2010123,string _CollegeName="信息",string _DepartmentName="软件",int _Year=1,string _ClassName="软20101",int _TotalCount=1,int _Score=89):StudentRecord(_Name, _Gender, _Age, _Number, _ClassName, _TotalCount, _Score),TeacherRecord(_Name,_Gender,_Age,_Number,_CollegeName,_DepartmentName,_Year)
        {
            LectureName=_LectureName;
            cout<<"teachingassistant"<<Name<<"constructed"<<endl;
        }
        void Print()
        {
            cout<<"Name:"<<Name<<" ";
            cout<<"Gender:"<<Gender<<" ";
            cout<<"Age:"<<Age<<" ";
            cout<<"Number:"<<Number<<" ";
            cout<<"ClassName:"<<ClassName<<" ";
            cout<<"TotalCount:"<<TotalCount<<" ";
            cout<<"Score:"<<Score<<" ";
            cout<<"CollegeName:"<<CollegeName<<" ";
            cout<<"DepartmentName:"<<DepartmentName<<" ";
            cout<<"Year:"<<Year<<" ";
            cout<<"LectureName:"<<LectureName<<endl;
        }
        void SetName(string _Name)
        {
            Name=_Name;
        }
        ~TeachingAssistant()
        {
            cout<<"teachingassistant"<<Name<<"destructed"<<endl;
        }
    };
    
    int main()
    {
        TeachingAssistant a1;
        a1.Print();
        a1.SetName("郑八");
        a1.Print();
        return 0;
    }
  • 相关阅读:
    21 jsp——jsp中的相对路径和绝对路径
    20 jsp——jsp的九大内置对象
    19 jsp——jsp的转发标签
    18 jsp——静态引入和动态引入
    17 jsp——全局代码,局部代码
    【zabbix告警监控】配置zabbix监控nginx服务
    【nagios监控】基于linux搭建nagios监控
    【zabbix监控问题】记录zabbix控制面板报错及日志报错的解决方法
    【docker构建】基于docker构建rabbitmq消息队列管理服务
    【docker构建】基于docker搭建redis数据库缓存服务
  • 原文地址:https://www.cnblogs.com/handsometaoa/p/11021261.html
Copyright © 2011-2022 走看看