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;
    }
  • 相关阅读:
    redis持久化的几种方式
    Spring Cloud基础教程
    微服务实践三: 服务编排
    分库分表的几种常见玩法及如何解决跨库查询等问题
    Spring Cloud微服务开发笔记5——Ribbon负载均衡策略规则定制
    第1章 Python基础-Python介绍&循环语句 练习题&作业
    MySQL中 optimize table '表名'的作用
    Python3 命令行参数
    Python enumerate() 函数
    Python rpartition() 方法
  • 原文地址:https://www.cnblogs.com/handsometaoa/p/11021261.html
Copyright © 2011-2022 走看看