题目:应用多态设计学生类
生成表示学生的类XS,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄,并将他们全部定义为纯虚函数;生成CZS类表示初中生,包含数据成员xm、xb和nl表示学生的姓名、性别和年龄,提供成员函数dispXM()、dispXB()和dispNL()分别用来显示姓名、性别和年龄;再生成类GZS表示高中生和类DXS表示大学生,同样包含相同含义的数据成员xm、xb和nl,也包括成员函数dispXM()、dispXB()和dispNL()。
#include"iostream.h"
#include"String.h"
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;
};
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;
};
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;
};
#include"iostream.h"
#include"String.h"
#include"XS.h"
CZS::CZS(char *m,int b,int n)
{
strcpy(xm,m);
xb=b;nl=n;
}
void CZS::dispXM()
{
cout<<"name="<<xm<<endl;
}
void CZS::dispXB()
{
if(xb==1)
cout<<"nan"<<endl;
if(xb==0)
cout<<"nv"<<endl;
}
void CZS::dispNL()
{
cout<<"age="<<nl<<endl;
}
GZS::GZS(char *m,int b,int n)
{
strcpy(xm,m);
xb=b;nl=n;
}
void GZS::dispXM()
{
cout<<"name="<<xm<<endl;
}
void GZS::dispXB()
{
if(xb==1)
cout<<"nan"<<endl;
if(xb==0)
cout<<"nv"<<endl;
}
void GZS::dispNL()
{
cout<<"age="<<nl<<endl;
}
DXS::DXS(char *m,int b,int n)
{
strcpy(xm,m);
xb=b;nl=n;
}
void DXS::dispXM()
{
cout<<"name="<<xm<<endl;
}
void DXS::dispXB()
{
if(xb==1)
cout<<"nan"<<endl;
if(xb==0)
cout<<"nv"<<endl;
}
void DXS::dispNL()
{
cout<<"age="<<nl<<endl;
}
void displayP(XS *p)
{
p->dispXM();
p->dispXB();
p->dispNL();
}
void displayR(XS &r)
{
r.dispXM();
r.dispXB();
r.dispNL();
}
本文介绍了一种使用多态设计学生类的方法,通过基类XS定义纯虚函数dispXM(), dispXB()和dispNL(),派生出CZS(初中生)、GZS(高中生)和DXS(大学生)类,每个类都实现了显示姓名、性别和年龄的功能。
310

被折叠的 条评论
为什么被折叠?



