1、 coutxyzy;1 分析以下程序的执行结果#include class base int n; base(int a) constructing base class n=a;n=n base() coutdestructing base class class subs:public base base bobj; int m; subs(int a,int b,int c):bobj(c),base(a)constructing sub cass m=b;m=mclass circle double radius; circle(double r) radius=r; double g
2、etarea() return radius*radius*3.14;class table double height; table(double h) height=h; double getheight() return height;class roundtable : public table,public circle char *color; roundtable(double h, double r, char c) : circle (r) , table (h) color=new charstrlen(c)+1; strcpy (color, c); char *getc
3、olor() return color; roundtable rt(0.8,1.2,黑色); cout 圆桌属性数据: endl;高度:rt.getheight() 米面积:rt.getarea() 平方米颜色:rt.getcolor() 3 图书馆的图书包含书名、编号、作者属性,读者包含姓名和借书证属性,每位读者最多可借5本书,编写程序输出某读者的借书情况。设计一个类object,从它派生出书类book和读者类reader,在reader类中有一个rentbook()成员函数用于借阅图书。class object char name20; int no; object() object(c
4、har na,int n) strcpy(name,na);no=n; void show() name(no);class book:public object char author10; book() book(char na,int n,char auth):object(na,n) strcpy(author,auth); void showbook() show();作者:author;class reader: book rent5; int k; reader(char na,int n):object(na,n)k=0; void rentbook(book &b) rent
5、k=b; k+; void showreader() 读者: show();endl所借图书: for(int i=0;ik;i+) couti+1: / 5个空格 renti.show(); book b1(C语言,100,谭浩强),b2(数据结构,110,严蔚敏 reader r1(王华,1234); r1.rentbook(b1); r1.rentbook(b2); r1.showreader();4 分析以下程序的执行结果 class A int n;virtual public A; /对比不加virtual的情况class D:public B,public C int getn(
6、)return B:n; D d; d.B:n=10; d.C:n=20;d.B:,d.C:D类是从B类和C类派生的而B类和C类又都是从A类派生,但这是虚继承关系即是虚基类,因此共用一个的副本,所以对于对象d,d.B:n与d.C:n是一个成员。20,20 5 设计一个虚基类base,包含姓名和年龄私有数据成员以及相关的成员函数,由它派生出领导类leader,包含职务和部门私有数据成员以及相关的成员函数。再由base派生出工程师类engineer,包含职称和专业私有数据成员以及相关的成员函数。然后由leader和engineer类派生出主任工程师类chairman。采用一些数据进行测试。由于ch
7、airman类从leader类和engineer类派生,而leader类和engineer类都是从base类派生的,所以为了使base只存一个副本,必须采用虚拟派生的方法。/7_8.cppclass B0 /声明基类B0 /外部接口 int nV; void fun()coutMember of B0class B1: virtual public B0 /B0为虚基类,派生B1类 /新增外部接口 int nV1;class B2: virtual public B0 /B0为虚基类派生B2类 int nV2;class D1: public B1, public B2 /派生类D1声明 in
8、t nVd; void fund()coutMember of D1void main() /程序主函数 D1 d1; /声明D1类对象d1 d1.nV = 1; /使用直接基类 d1.nV1 = 2; d1.nV2 = 3; d1.nVd = 4;sizeof(d1)d1+0)d1+1)d1+2)d1+3)d1+4)d1+5)class base / 基类 char* name;/ 姓名 int age; / 年龄 base() void setname(char na) name=new charstrlen(na)+1; void setage(int a) age=a; char* g
9、etname() return name; int getage() return age;class leader:virtual public base / 领导类 char *job;/职务 char *dep;/部门 leader() void setjob(char jb) job=new charstrlen(jb)+1; strcpy (job, jb); void setdep(char dp) dep=new char strlen (dp) +1 ; strcpy (dep, dp); char *getjob() return job; char *getdep() re
10、turn dep;class engineer:virtual public base / 工程师类 char *major; / 专业 char *prof; / 职称 engineer () void setmajor(char maj ) major=new charstrlen(maj)+1; strcpy (major,maj); void setprof(char pf) prof=new charstrlen(pf)+1; strcpy (prof, pf); char*getmajor() return major; char*getprof() return prof; ;c
11、lass chairman:public leader,public engineer / 主任工程师类 ; chairman c; c.setname(李明 c.setage(42); c.setjob(处长 c.setdep(设计处 c.setmajor(电站锅炉设计 c.setprof(高级工程师输出结果: c.getname() ,年龄 c.getage()岁,担任c.getdep() c.getjob() , c.getprof() ,从事 c.getmajor()专业。或改成带参数的构造函数: base(char na, int a) delete name; leader(cha
12、r na, int a, char jb, char dp): base(na,a) leader() delete job; delete dep; engineer (char na, int a, char maj , char pf) :base(na, a) engineer() delete major; delete prof; chairman(char na, int a, char jb, char dp, char maj ,char pf):base(na, a),leader( na , a, jb , dp ),engineer ( na , a, maj , pf
13、 ) chairman c(,42,6 分析以下程序的执行结果class Sample Sample() Sample(int i)n=i; Sample &operator =(Sample); void disp()coutSample &Sample:operator=(Sample s) Sample:n=s.n; return *this; Sample s1(10),s2; s2=s1; s2.disp();本题说明重载运算符(=)的使用方法。operator=成员函数实现两个对象的赋值。 n=10 7 分析以下程序的执行结果 operator+()n+; operator+(int)n+=2; void disp() Sample A(2),B(2); A+; +B; A.disp(); B.disp();本题说明重载运算符+的使用方法。operator+()为前缀重载运算符,operator+(int)为后缀重载运算符。A+的语句调用后缀重载运算符,+B语句调用前缀重载运算符。n=4 8 分析以下程序的执行结果 int A1010; int &operator()(int,int);int &operator()(int x,int y) return Axy;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1