多态性与虚函数练习

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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')

{

相关文档
最新文档