nwafu c++ oop实习-6.虚基类

题目描述

(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 数据结构
显示其信息。

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

输入

输出

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

样例输出

<span style="color:#333333"><span style="background-color:#f5f5f5">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</span></span>

提示


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

 


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

 


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

#include <iostream>
#include <string.h>
using namespace std;

class person{
    public:
        string name;
        person(){
        name = "郑七";
        cout << "person" << name << "constructed" << endl;
        }
        ~person(){
        cout << "person" << name << "destructed" << endl;
        }
    public:
        string gander;
        int age;
};
class studentrecord:virtual public person{
public:
    string number;
    string classname;
    int totalcount;
    studentrecord(){
    cout << "student" << name << "constructed" << endl;
    }
    ~studentrecord(){
    cout << "student" << name << "destructrd" << endl;
    }
public:
    double score;
};
class teacherrecord:virtual public person{
public:
    string collegename;
    string departmentname;
    teacherrecord(){
    cout << "teacher" << name << "constructed" << endl;
    }
    ~teacherrecord(){
    cout << "teacher" << name << "destructed" << endl;
    }
public:
    int year;
};
class teacherass : public studentrecord,public teacherrecord{
public:
    string lecturename;
    teacherass(){
    name = "郑七";
    gander = "男";
    age = 22;
    number = "2010123";
    classname = "软20101";
    totalcount = 1;
    score = 89;
    collegename = "信息";
    departmentname = "软件";
    year = 1;
    lecturename = "数据结构";
    cout << "teacherass" << name << "constructed" <<endl;
    }
    ~teacherass(){
    cout << "teacherass" << name << "constructed" << endl;
    }
    void show(){
    cout << "name:" << name << " gander:" << gander
                 << " Age:" << age << " Number:" << number
                 << " ClassName:" << classname
                 << " TotalCount:" << totalcount
                 << " Score:" << score ;
            cout << "CollegeName:" << collegename
                 << " DepartmentName:" << departmentname
                 << " Year:" << year
                 << " LectureName:" << lecturename << endl;
        }
    void gainame (string name){
    name = name;
    return;
    }
};
int main(){
teacherass a;
a.show();
string s="郑八";
a.gainame(s);
a.show();
return 0;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

511511511

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值