(a)编写一个抽象类student,仅在public中包含一个纯虚函数printScore; (b)编写一个高中生类senior,公共继承自student;数据成员包括物理和化学课成绩:physics和chemistry,都是double类型;编写构造函数;编写函数printScore打印这两门课的成绩; (c)编写一个大学生college类,公共继承自senior,数据成员包括面向对象课成绩:OOP,double类型;编写构造函数;编写函数printScore打印物理、化学和面向对象的成绩。 (d)主函数中定义一个senior对象,物理和化学课成绩分别为85和90;定义一个college对象,物理、化学,以及面向对象课成绩分别为85、90和95,利用多态调用printScore函数打印两个对象的成绩。
时间: 2024-03-27 20:40:54 浏览: 37
好的,以下是代码实现:
```cpp
#include <iostream>
using namespace std;
// 抽象类
class Student {
public:
virtual void printScore() = 0; // 纯虚函数
};
// 高中生类
class Senior: public Student {
public:
Senior(double p, double c): physics(p), chemistry(c) {} // 构造函数
void printScore() { cout << "Physics: " << physics << ", Chemistry: " << chemistry << endl; } // 打印成绩函数
private:
double physics;
double chemistry;
};
// 大学生类
class College: public Senior {
public:
College(double p, double c, double o): Senior(p, c), OOP(o) {} // 构造函数
void printScore() { cout << "Physics: " << physics << ", Chemistry: " << chemistry << ", OOP: " << OOP << endl; } // 打印成绩函数
private:
double OOP;
};
int main() {
Senior s(85, 90); // 创建高中生对象
College c(85, 90, 95); // 创建大学生对象
Student* p1 = &s; // 使用基类指针指向高中生对象,实现多态
Student* p2 = &c; // 使用基类指针指向大学生对象,实现多态
p1->printScore(); // 调用高中生的打印成绩函数
p2->printScore(); // 调用大学生的打印成绩函数
return 0;
}
```
输出结果为:
```
Physics: 85, Chemistry: 90
Physics: 85, Chemistry: 90, OOP: 95
```