多态练习题(共11页).doc
《多态练习题(共11页).doc》由会员分享,可在线阅读,更多相关《多态练习题(共11页).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上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) 分别生
2、成CZS、GZS、DXS类对象(4) 将CZS、GZS、DXS类对象的指针赋给指针赋给XS类的指针变量。(5) 分别用XS类的指针和引用访问dispXM()、dispXB()和dispNL()函数。(6) 观察程序结果。#include #include using namespace std;class XSpublic:virtual void dispXM()=0;virtual void dispXB()=0;virtual void dispNL()=0;class CZS:public XSpublic:CZS(char * m=张三,int b=1,int n=14);void
3、dispXM();void dispXB();void dispNL();protected:char xm9;int xb,nl;CZS:CZS(char *m,int b,int n)strcpy(xm,m);xb=b,nl=n;void CZS:dispXM()coutname:xmendl;void CZS:dispXB()if(xb=1)coutManendl;if(xb=0)coutWomanendl;void CZS:dispNL()coutage:nlendl;class GZS:public XSpublic:GZS(char * m=张三,int b=1,int n=17)
4、;void dispXM();void dispXB();void dispNL();protected:char xm9;int xb,nl;GZS:GZS(char *m,int b,int n)strcpy(xm,m);xb=b,nl=n;void GZS:dispXM()coutname:xmendl;void GZS:dispXB()if(xb=1)coutManendl;if(xb=0)coutWomanendl;void GZS:dispNL()coutage:nlendl;class DXS:public XSpublic:DXS(char * m=张三,int b=1,int
5、 n=20);void dispXM();void dispXB();void dispNL();protected:char xm9;int xb,nl;DXS:DXS(char *m,int b,int n)strcpy(xm,m);xb=b,nl=n;void DXS:dispXM()coutname:xmendl;void DXS:dispXB()if(xb=1)coutManendl;if(xb=0)coutWomanendl;void DXS:dispNL()coutage:nldispXM(); p-dispXB(); p-dispNL();void displayR( XS &
6、p) p.dispXM(); p.dispXB(); p.dispNL();void main()CZS czs(赵一,1,12);GZS gzs(钱二,0,15);DXS dxs(孙三,1,18);XS *p;/定义抽象基类的指针变量pp=&czs;/将初中生对象czs的地址赋给p displayP(p);p=&gzs;/将高中生对象czs的地址赋给p displayP(p);p=&dxs;/将大学生对象czs的地址赋给p displayP(p);coutn-n;XS &r1=czs;/定义抽象基类的引用变量r1为czs的别名displayR(r1);XS &r2=gzs;/定义抽象基类的引
7、用变量r2为czs的别名displayR(r2);XS &r3=dxs;/定义抽象基类的引用变量r3为czs的别名displayR(r3);coutn-n;2、某小型公司主要有3类人员:经理、兼职技术人员、兼职销售员。这些人员分别具有以下属性。 经理:姓名、编号、固定工资、当月薪水、计算月薪、显示信息 兼职技术人员:姓名、编号、工作小时、每小时工资额、当月薪水、计算月薪、显示信息; 兼职销售员:姓名、编号、销售额、销售额提成、当月薪水、计算月薪、显示信息要求: 人员编号基数为1000,每输入一个人员信息编号顺序加1 月薪计算办法是经理固定月薪8000元;兼职技术人员按100元/小时领取月薪;兼
8、职推销员按当月销售额的4%提成。根绝题目要求,设计一个基类employee,然后派生出technician(兼职技术人员)类、manager(经理)类和salesman(兼职销售员)类。 部分成员函数设置为虚函数 将“”运算符#include #include #include #include using namespace std; const int Maxr=100; class Employee /职工类 int tag;/删除标记 int no;/职工编号 char name20; char zw20;/职工姓名 int salary;/职工工资 public: Employee(
9、) char *getname() return name;/获取名字 int gettag() return tag;/获取标记 int getno() return no;/获取编号 int getsalary()return salary; void setzw(char q)/设置名字 strcpy(zw,q); void setname(char na)/设置名字 strcpy(name,na); void getsalary(int sa)salary=sa; void delna()tag=1;/删除 void addemp(int n,int sa,char *na,char
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 练习题 11
限制150内