继承与多态性

本文介绍了一种使用多态设计学生类的方法,通过基类XS定义纯虚函数dispXM(), dispXB()和dispNL(),派生出CZS(初中生)、GZS(高中生)和DXS(大学生)类,每个类都实现了显示姓名、性别和年龄的功能。

题目:应用多态设计学生类
生成表示学生的类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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值