多态性与虚函数练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多态性与虚函数练习
1.设计一个评选优秀教师和学生的程序,其类结构如图1所示。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出。
图1 类结构
假设运行结果如下所示:#include
#include
using namespace std;
class Base
{
public:
void getname(){ cout<<"姓名:";cin>>name;} void printname()
{ cout< virtual int isgood()=0; protected: string name; }; class Student:public Base { public: void getnum(){ cout<< "成绩:";cin>>num;} int isgood() { return num>90?1:0;} private: int num; }; class Teacher:public Base { public: void getnum() { cout<< "每年发表论文数:";cin>>num;} int isgood(){ return num>3?1:0;} 类Base void getname() void printname() 纯虚函数int ifgood()=0 string name 类student void getnum() int num 纯虚函数ifgood实现:若考试成绩大于90分,则返回1 类teachere void getnum() int num 纯虚函数ifgood实现:若一年发表论文大于3篇,则返回1 private: int num; }; int main() { Base *p[50]; Student *pstud; Teacher *ptech; char ch; int count=0; do { cout<<"Input teacher(t) or student(s):"; cin>>ch; if(ch=='s') { pstud=new Student; pstud->getname(); pstud->getnum(); p[count++]=pstud; } else if(ch=='t') { ptech=new Teacher; ptech->getname(); ptech->getnum(); p[count++]=ptech; } else cout<<"Data error!"< cout<<"continue (y/n)?"; cin>>ch; }while(ch=='y'); cout<<"优秀者的姓名:"; for(int i=0;i if(p[i]->isgood()==1) p[i]->printname(); cout< } 2.编写一个程序实现图书和杂志销售管理。当输入一系列图书和杂志销售记录后,将销售良好(图书每月售500本以上,杂志每月2500本以上)的图书和杂志名称显示出来。 图2 类结构 假设运行结果如下: #include #include using namespace std; class Base { public: virtual void gettitle()=0; void printtitle() { cout< virtual int isgood()=0; protected: string title; }; class Book:public Base { public: void gettitle() { cout<<"书名:";cin>>title;} void getsold(){ cout<< "每月销售书量:";cin>>numsold;} int isgood() { return numsold>500?1:0;} private: int numsold; }; class Journal:public Base { public: void gettitle() { cout<<"杂志名:";cin>>title;} void getsold() { cout<< "每月销售杂志量:";cin>>numsold;} int isgood(){ return numsold>2500?1:0;} private: int numsold; }; int main() { Base *p[50]; Book *pbook; Journal *pjour; char ch; int count=0; do { cout<<"Input book(b) or journal(j):"; cin>>ch; if(ch=='b') {