多态练习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、生成表示学生的类XS,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄,并将他们全部定义为纯虚函数;生成CZS类表示初中生,包含数据成员xm、xb和nl表示学生的姓名、性别和年龄,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄;再生成类GZS表示高中生和类DXS表示大学生,同样包含相同含义的数据成员xm、xb和nl,也包括成员函数dispXM()、dispXB()和dispNL()。要求:

(1)设计和实现基本类XS

(2)设计和实现派生类CZS,GZS和DXS

(3)分别生成CZS、GZS、DXS类对象

(4)将CZS、GZS、DXS类对象的指针赋给指针赋给XS类的指针变量。

(5)分别用XS类的指针和引用访问dispXM()、dispXB()和dispNL()函数。

(6)观察程序结果。

#include

#include

using namespace std;

class XS{

public:

virtual void dispXM()=0;

virtual void dispXB()=0;

virtual void dispNL()=0;

};

class CZS:public XS{

public:

CZS(char * m="张三",int b=1,int n=14);

void dispXM();

void dispXB();

void dispNL();

protected:

char xm[9];

int xb,nl;

};

CZS::CZS(char *m,int b,int n)

{

strcpy(xm,m);

xb=b,nl=n;

}

void CZS::dispXM()

{

cout<<"name:"<

}

void CZS::dispXB()

{

if(xb==1)

cout<<"Man"<

if(xb==0)

cout<<"Woman"<

}

void CZS::dispNL()

{

cout<<"age:"<

}

class GZS:public XS{

public:

GZS(char * m="张三",int b=1,int n=17);

void dispXM();

void dispXB();

void dispNL();

protected:

char xm[9];

int xb,nl;

};

GZS::GZS(char *m,int b,int n)

{

strcpy(xm,m);

xb=b,nl=n;

}

void GZS::dispXM()

{

cout<<"name:"<

}

void GZS::dispXB()

{

if(xb==1)

cout<<"Man"<

if(xb==0)

cout<<"Woman"<

}

void GZS::dispNL()

{

cout<<"age:"<

}

class DXS:public XS{

public:

DXS(char * m="张三",int b=1,int n=20);

void dispXM();

void dispXB();

void dispNL();

protected:

char xm[9];

int xb,nl;

};

DXS::DXS(char *m,int b,int n)

{

strcpy(xm,m);

xb=b,nl=n;

}

void DXS::dispXM()

{

cout<<"name:"<

}

void DXS::dispXB()

{

if(xb==1)

cout<<"Man"<

if(xb==0)

cout<<"Woman"<

void DXS::dispNL()

{

cout<<"age:"<

}

void displayP(XS *p)

{

p->dispXM();

p->dispXB();

p->dispNL();

}

void displayR( XS &p)

{

p.dispXM();

p.dispXB();

p.dispNL();

}

void main()

{

CZS czs("赵一",1,12);

GZS gzs("钱二",0,15);

DXS dxs("孙三",1,18);

相关文档
最新文档