#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; }请修改此代码
时间: 2024-03-27 18:41:01 浏览: 54
使用include <iostream>时一定要加using namespace std
这段代码中存在一个问题,即College类继承自Senior类,但是Senior类中的printScore函数已经是虚函数,因此不需要再次声明为虚函数。修改后的代码如下:
```
#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() override { 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() override { 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;
}
```
修改后的代码中,Senior类中的printScore函数没有再次声明为虚函数,而是使用了override关键字,表示该函数是重写了基类中的虚函数。这样可以提高代码的可读性,并且避免了在派生类中误写成非虚函数的情况。
阅读全文