3.由在校人员类(Person)作为基类派生出学生类(Student): 在校人员类有成员数据:编号(ID)、姓名(name)、性别(sex)、年龄(age),要求有 如下成员函数:构造函数、获取编号的函数和输出所有成员的函数。把在校人员类作为基类,通过公有继承,派生学生类,派生类新增成员数据有数学(math)、物理(physical)、英语(english)和C++程序设计(cpp)四门课程以及总成绩(total);新增成员函数有构造函数和输出所有成员的函数。main()完成派生类对象的定义和有关成员函数的测试。
时间: 2024-03-22 12:36:50 浏览: 86
设计一个Person类,有Person类派生一个Student类和一个Teacher类
下面是一个可能的实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Person {
public:
Person(int id, const string& name, char sex, int age)
: m_id(id), m_name(name), m_sex(sex), m_age(age) {}
int getId() const { return m_id; }
void printInfo() const {
cout << "ID: " << m_id << endl;
cout << "Name: " << m_name << endl;
cout << "Sex: " << m_sex << endl;
cout << "Age: " << m_age << endl;
}
private:
int m_id;
string m_name;
char m_sex;
int m_age;
};
class Student : public Person {
public:
Student(int id, const string& name, char sex, int age,
double math, double physical, double english, double cpp)
: Person(id, name, sex, age),
m_math(math), m_physical(physical), m_english(english), m_cpp(cpp),
m_total(math + physical + english + cpp) {}
void printInfo() const {
Person::printInfo();
cout << "Math: " << m_math << endl;
cout << "Physical: " << m_physical << endl;
cout << "English: " << m_english << endl;
cout << "C++: " << m_cpp << endl;
cout << "Total: " << m_total << endl;
}
private:
double m_math;
double m_physical;
double m_english;
double m_cpp;
double m_total;
};
int main() {
Student s(1001, "张三", 'M', 20, 80, 85, 90, 95);
s.printInfo();
return 0;
}
```
在这个实现中,`Person`类有一个构造函数和两个成员函数:`getId`和`printInfo`。`Student`类通过公有继承从`Person`类派生,新增了四个成员数据:`m_math`、`m_physical`、`m_english`和`m_cpp`,以及一个计算总成绩的成员数据`m_total`。`Student`类也有一个构造函数和一个成员函数`printInfo`,后者调用了`Person`类的成员函数`printInfo`并输出了新增的成员数据。
在`main`函数中,我们创建了一个`Student`对象`s`,并用一些数据初始化它。然后调用`s`的成员函数`printInfo`,输出对象的所有成员数据。
阅读全文