虚函数、抽象类(上课铃)
6-3 上课铃响之后 - C/C++ 多态
分数 20
作者 海洋饼干叔叔
单位 重庆大学
如本章开篇所述,当小学里的上课铃响之后,学生(Student)、教师(Teacher)和校长(Principal)会对同一个消息表现出不同的行为。请设计Person、Student、Teacher以及Principal类,合理安排他们之间的继承关系并将所有类的bellRing()及析构函数设计为虚函数,使得下述代码可以正常执行并产生期望的执行结果。
裁判测试程序样例:
#include <iostream>
using namespace std;
//定义Person, Student, Teacher, Principal类
int main() {
cout << "School bell rings..." << endl;
Person* persons[3] = {new Student(),new Teacher(),new Principal()};
persons[0]->bellRing();
persons[1]->bellRing();
persons[2]->bellRing();
for (auto i=0;i<3;i++)
delete persons[i];
return 0;
}
输入样例:
输出样例:
School bell rings...
I am a student learning in classroom.
I am a teacher teaching in classroom.
I am the principal inspecting in campus.
A student object destroyed.
A teacher object destroyed.
A principal object destroyed.
class Person
{
public:
virtual void bellRing()=0;
virtual ~Person(){}
};
class Student:public Person
{
public:
void bellRing()
{
cout<<"I am a student learning in classroom."<<endl;
}
~Student()
{
cout<<"A student object destroyed."<<endl;
}
};
class Teacher:public Person
{
public:
void bellRing()
{
cout<<"I am a teacher teaching in classroom."<<endl;
}
~Teacher()
{
cout<<"A teacher object destroyed."<<endl;
}
};
class Principal:public Person
{
public:
void bellRing()
{
cout<<"I am the principal inspecting in campus."<<endl;
}
~Principal()
{
cout<<"A principal object destroyed."<<endl;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器