(1)、定义一个人员类Person,包括成员变量:编号、姓名、性别和用于输入input、输出output的成员函数;

(2)、在此基础上派生出学生类Student(增加一个成员变量:成绩)和教师类Teacher(增加一个成员变量:教龄);

(3)、学生类和教师类分别有输入input、输出output的成员函数;

在人员类中加入对+符号的重载,使其达到以下目的:

(4)两个人员类进行相加,其结果仍然是一个人员类,并分别对编号、姓名、性别进行字符串相加。

(5)、加入main函数,对上述定义进行测试。


 C++ Code 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111


#include <iostream>
#include <string>
using namespace std;
//定义类
class Person
{
protected:
    string Number;
    string Name;
    string Gender;
public:
    
//构造函数
    Person()
    {

    }
    
//构造函数
    Person(string nu,string na,string ge)
    {
        
this->Number=nu;
        
this->Name=na;
        
this->Gender=ge;
    }
    
//输入函数
    void input()
    {
        cin >> 
this->Name;
        cin >> 
this->Number;
        cin >> 
this->Gender;
    }
    
//输出函数
    void output()
    {
        cout << 
"编号:" << this->Number << endl;
        cout << 
"姓名:" << this->Name << endl;
        cout << 
"性别:" << this->Gender << endl; 
    }
    
//运算符重载
    Person operator+(Person p)
    {
        Person newPerson;
        newPerson.Number = 
this->Number + p.Number;
        newPerson.Name = 
this->Name + p.Name;
        newPerson.Gender = 
this->Gender + p.Gender;
        
return newPerson;
    }
};
//学生类
class Student :public Person
{
private:
    
float results;
public:
    
//构造函数
    Student()
    {
        
this->results = 0;
    }
    
//输入函数
    void input()
    {
        cout << 
"请输入学号,姓名,成绩:";
        Person::input();
        cin >> 
this->results;
    }
    
//输出函数
    void output()
    {
        Person::output();
        cout << 
"成绩:" << results <<endl;
    }
};
//教师类
class Teacher :public Person
{
private:
    
int age;
public:
    
//输入函数
    void input()
    {
        cout << 
"请输入学号,姓名,成绩,教龄:";
        Person::input();
        cin >> 
this->age;
    }
    
//输出函数
    void output()
    {
        Person::output();
        cout << 
"教龄:" << age <<endl;
    }
};
//主函数
void main()
{
    
//基类
    Person p1("A0001","张三","男"),p2("A002","李四","女"),p3;
    p1.output();
    
//运算符重载
    p3 = p1 + p2;
    p3.output();
    
//学生类
    Student s1;
    s1.input();
    s1.output();
    
//教师类
    //Teacher t1;
    //t1.input();
    //t1.output();

}

wKioL1X3r1fQ-DJIAAEOQVm_ayg462.jpg