定义含有一个纯虚函数Show的抽象类person,含姓名:char *Name;派生出两个类,学生类Student及教师类,如果学生的三门课考试成绩都在75分以上的学生为优等生,教师一年发表的论文数量在3篇以上(含3篇)为合格教师,并用main( )函数进行测试。
时间: 2024-02-28 16:56:36 浏览: 56
c.rar_class Complex_show_编写一个C ++类
5星 · 资源好评率100%
好的,这是一个关于C++面向对象的问题。对于这个问题,我们可以这样来定义抽象类`person`:
```c++
class person {
protected:
char *Name;
public:
person(char *name) : Name(name) {}
virtual ~person() {}
virtual void Show() = 0; // 纯虚函数
};
```
这个抽象类有一个纯虚函数`Show()`,并且有一个`char *Name`成员变量。接下来我们可以定义学生类`Student`和教师类`Teacher`:
```c++
class Student : public person {
private:
int score1, score2, score3;
public:
Student(char *name, int s1, int s2, int s3) : person(name), score1(s1), score2(s2), score3(s3) {}
virtual ~Student() {}
virtual void Show() {
std::cout << "姓名:" << Name << std::endl;
std::cout << "成绩:" << score1 << " " << score2 << " " << score3 << std::endl;
if (score1 >= 75 && score2 >= 75 && score3 >= 75) {
std::cout << "该学生为优等生" << std::endl;
} else {
std::cout << "该学生不是优等生" << std::endl;
}
}
};
class Teacher : public person {
private:
int paper_num;
public:
Teacher(char *name, int num) : person(name), paper_num(num) {}
virtual ~Teacher() {}
virtual void Show() {
std::cout << "姓名:" << Name << std::endl;
std::cout << "发表论文数量:" << paper_num << std::endl;
if (paper_num >= 3) {
std::cout << "该教师为合格教师" << std::endl;
} else {
std::cout << "该教师不是合格教师" << std::endl;
}
}
};
```
在`Student`类中,我们定义了三个成绩变量`s1`, `s2`, `s3`,并在`Show()`函数中判断是否为优等生。在`Teacher`类中,我们定义了一个论文数量变量`num`,并在`Show()`函数中判断是否为合格教师。这两个类都继承自`person`类,并实现了纯虚函数`Show()`。
最后,我们在`main()`函数中进行测试:
```c++
int main() {
person *p[4];
p[0] = new Student("小明", 80, 85, 90);
p[1] = new Student("小红", 70, 75, 80);
p[2] = new Teacher("李老师", 2);
p[3] = new Teacher("王老师", 4);
for (int i = 0; i < 4; i++) {
p[i]->Show();
std::cout << std::endl;
}
return 0;
}
```
我们定义了一个`person`类型的指针数组`p[4]`,并分别指向四个对象:两个`Student`对象和两个`Teacher`对象。然后遍历数组并调用`Show()`函数输出结果。
阅读全文