C++某学校教师每月工资的计算公式如下:固定工资+课时补贴。1.教授(Professor)的固定工资为5000元,每个课时补贴50元;2.副教授(ViceProfessor )的固定工资为3000元,每个课时补贴30元;3.讲师(Tutor)的固定工资为2000元,每个课时补贴20元。定义教师(Teacher)抽象类,派生不同职称的教师子类,编写程序求若干教师的月工资。
时间: 2024-01-21 12:19:19 浏览: 110
以下是一个可能的实现:
```c++
#include <iostream>
using namespace std;
// 教师抽象类
class Teacher {
protected:
string name; // 姓名
int course_hour; // 课时数
public:
Teacher(string n, int ch) : name(n), course_hour(ch) {}
virtual int get_salary() = 0; // 纯虚函数,计算月工资
};
// 教授类
class Professor : public Teacher {
public:
Professor(string n, int ch) : Teacher(n, ch) {}
int get_salary() {
return 5000 + course_hour * 50;
}
};
// 副教授类
class ViceProfessor : public Teacher {
public:
ViceProfessor(string n, int ch) : Teacher(n, ch) {}
int get_salary() {
return 3000 + course_hour * 30;
}
};
// 讲师类
class Tutor : public Teacher {
public:
Tutor(string n, int ch) : Teacher(n, ch) {}
int get_salary() {
return 2000 + course_hour * 20;
}
};
int main() {
// 创建不同职称的教师对象
Teacher* t1 = new Professor("张三", 80);
Teacher* t2 = new ViceProfessor("李四", 60);
Teacher* t3 = new Tutor("王五", 40);
// 输出月工资
cout << t1->get_salary() << endl; // 应输出9000
cout << t2->get_salary() << endl; // 应输出4800
cout << t3->get_salary() << endl; // 应输出2800
// 释放内存
delete t1;
delete t2;
delete t3;
return 0;
}
```
这里使用了抽象类和多态的概念,让每个职称的教师子类都实现了计算月工资的方法 `get_salary()`。在 `main()` 函数中,创建了不同职称的教师对象,并通过指针调用了各自的 `get_salary()` 方法,得到了月工资。最后记得释放内存。
阅读全文