C++补充作业Word格式文档下载.docx

上传人:b****3 文档编号:7844538 上传时间:2023-05-09 格式:DOCX 页数:21 大小:20.66KB
下载 相关 举报
C++补充作业Word格式文档下载.docx_第1页
第1页 / 共21页
C++补充作业Word格式文档下载.docx_第2页
第2页 / 共21页
C++补充作业Word格式文档下载.docx_第3页
第3页 / 共21页
C++补充作业Word格式文档下载.docx_第4页
第4页 / 共21页
C++补充作业Word格式文档下载.docx_第5页
第5页 / 共21页
C++补充作业Word格式文档下载.docx_第6页
第6页 / 共21页
C++补充作业Word格式文档下载.docx_第7页
第7页 / 共21页
C++补充作业Word格式文档下载.docx_第8页
第8页 / 共21页
C++补充作业Word格式文档下载.docx_第9页
第9页 / 共21页
C++补充作业Word格式文档下载.docx_第10页
第10页 / 共21页
C++补充作业Word格式文档下载.docx_第11页
第11页 / 共21页
C++补充作业Word格式文档下载.docx_第12页
第12页 / 共21页
C++补充作业Word格式文档下载.docx_第13页
第13页 / 共21页
C++补充作业Word格式文档下载.docx_第14页
第14页 / 共21页
C++补充作业Word格式文档下载.docx_第15页
第15页 / 共21页
C++补充作业Word格式文档下载.docx_第16页
第16页 / 共21页
C++补充作业Word格式文档下载.docx_第17页
第17页 / 共21页
C++补充作业Word格式文档下载.docx_第18页
第18页 / 共21页
C++补充作业Word格式文档下载.docx_第19页
第19页 / 共21页
C++补充作业Word格式文档下载.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++补充作业Word格式文档下载.docx

《C++补充作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++补充作业Word格式文档下载.docx(21页珍藏版)》请在冰点文库上搜索。

C++补充作业Word格式文档下载.docx

{

Number=m;

}

voidPrintInfor()

PrintName();

Numberofstudent"

intNumber:

return0;

2.编程体会包含内A嵌对象多继承派生类的带参构造函数和析构函数调用顺序。

声明三个基类Base1、Base2和Base3,然后从这三个基类按照公有方式派生出类Derived。

在三个基类中分别定义带一个整型参数的构造函数和析构函数输出提示信息,提示信息中需要包含整型参数的数值。

在派生类Derived中需要包含三个基类的内嵌对象,和相应的构造函数和析构函数用于输出提示信息,在构造函数中包含七个整型参量,其中六个用于初始化派生类和内嵌对象。

intmain(){DerivedobjD(1,2,3,4,5,6,7);

}

#include<

classBase1

Base1(intb)

{cout<

Base1constructorcalled"

b<

~Base1()

Base1destrutorcalled"

classBase2

Base2(intb)

Base2constructorcalled"

~Base2()

Base2destrutorcalled"

classBase3

Base3(intb)

Base3constructorcalled"

~Base3()

Base3destrutorcalled"

classDerived:

publicBase3,publicBase1,publicBase2

public:

Derived(inta,intb,intc,intd,inte,intf,intg):

T(intc),F(intb),R(intd),Base3(intg),Base1(inte),Base2(intf)

{

cout<

Derivedconstructorcalled"

a<

}

~Derived()

Deriveddestructorcalled"

private:

Base2T;

base1F;

Base3R;

};

 

习题六

3、

(1)

classPoint

Point(inta,intb)

x=a;

y=b;

~Point(){

cout<

execatingPointdestructor"

voiddisplay()

("

x<

"

y<

)"

intx;

inty;

classCircle:

publicPoint

Circle(inta,intb,intr):

Point(a,b),radius(r){}

~Circle(){cout<

execatingCircledestructor"

display();

radius="

radius<

intradius;

Point*p=newCircle;

Pointm(3,6);

Point*k=&

m;

k->

display();

Circlec(3,6,5);

Point*pt=&

c;

pt->

deletep;

第六章作业题:

第一题:

1.声明一个抽象类Med作为基类,其中仅包含一个string类型数据成员title(名称)和两个纯虚函数print()和id()。

然后派生出Book类,CD类和Mag类。

在Book类中,包含3个string类型数据成员author(作者),pub(出版者),isbn(书号)和函数成员print()和id()。

在CD类中,包含3个string类型数据成员composer(制作者),make(介质形式),number(编号)和函数成员print()和id()。

在Mag类中,包含2个string类型数据成员issn(杂志编号),pub(出版者),两个整型数据成员volume(卷),number(号)和函数成员print()和id()。

cstring>

cladd__Med

{public:

virtualvoidprint();

virtualvoidid();

protected:

stringtitle;

classBook:

publicMed

Book();

Book(stringau,stringpub,stringis,stringt):

Med(t)

Author=au;

Publisher=pub;

isbn=is;

title=t;

voidprint();

voidId();

stringAuthor;

stringPublisher;

stringisbn;

voidBook:

print()

title<

Author:

Author<

"

Publisher:

Publisher<

classCD:

CD();

CD(stringc,stringm,stringnum):

composer=c;

make=m;

number=num;

stringcomposer;

stringnumber;

stringmake;

voidCD:

CDcomposer:

composer<

id()

make:

make<

id:

number<

classMag:

Mag();

Mag(stringt,stringi,stringpub,stringmag):

issn=i;

publisher=pub;

Magzine=mag;

stringissn;

stringMagzine;

stringpublisher;

voidMag:

publisher<

Magzine:

Magzine<

Id()

Id:

issn<

Bookbook("

张三"

C++语言程序设计"

清华大学出版社"

0-000-00000-1"

);

Magmag("

辨析C/C++编程模式"

0000-0000x"

浙江大学出版社

vol.16"

showMedia(book);

showMedia(mag);

showMedia(cd);

voidshowMedia(Med&

p)

p.print();

\tId:

p.Id()<

第二题:

2.设计一个抽象基类Worker,并从该基类中派生出计时工人类HourlyWorker和计薪工人类SalariedWorker。

每名工人都具有姓名name、年龄age、性别sex和小时工资额pay_per_hour等属性;

周薪计算成员函数voidCompute_pay(doublehours),

(其中参数hours为每周的实际工作时数)和用于显示工人的基本信息的标准输出运算符友元函数ostream&

operator<

(ostream&

out,Worker&

worker)。

工人的薪金等级以小时工资额划分:

计时工人的薪金等级分为10、20和40US$/hour三个等级;

计薪工人的薪金等级,分为30和50US$/hour两个等级。

不同类别和等级工人的周薪计算方法不同,计时工人周薪的计算方法是:

如果每周的工作时数(hours)在40以内,则周薪=小时工资额×

实际工作时数;

如果每周的工作时数(hours)超过40,则周薪=小时工资额×

40+1.5×

小时工资额×

(实际工作时数–40)。

而计薪工周薪的计算方法是:

如果每周的实际工作时数不少于35小时,则按40小时计周薪(允许有半个工作日的事/病假),超出40小时部分不计薪,即周薪=小时工资额×

40;

如果每周的实际工作时数少于35小时(不含35小时),则周薪=小时工资额实际工作时数+0.5×

(35-实际工作时数)。

1.定义Worker、HourlyWorker和SalariedWorker类,并实现它们的不同周薪计算方法。

2.在主函数main()中使用HourlyWorker和SalariedWorker类完成如下操作:

①通过控制台输入、输出操作顺序完成对5个不同工人的基本信息(姓名、年龄、性别、类别和薪金等级)的注册。

注意,5个工人应分属于两类工人的5个等级。

②通过一个菜单结构实现在5个工人中可以任意选择一个工人,显示该工人的基本信息,根据每周的实际工作时数(通过控制台输入)计算并显示该工人的周薪。

stdio.h>

classWorker

Worker();

Worker(stringn,inta,chars,floatp)

name=n;

age=a;

sex=s;

pay_per_hour=p;

voidName()

swith(choice)

case1:

name=name1;

break;

case2:

name=name2;

case3:

name=name3;

case4:

name=name4;

case4:

case5:

name=name5;

virtualvoidCompute_pay(doublehours)=0;

virtualfriendostream&

operator<

(ostream&

out,Worker&

Worker);

stringname;

intage;

charsex;

intchoice;

floatpay_per_hour;

ostream&

output,Worker&

w)

output<

w.name<

w.age<

w.sex<

w.pay_per_hour<

returnoutput;

classHourlyWorker:

publicWorker

HourlyWorker();

HourlyWorker(stringn,inta,chars,floatp):

Worker(n,a,s,p){}

voidCompute_pay(doublehours)

switch(k){

case1:

if(hours<

40)

zhouxin=10*hours;

else

zhouxin=10*40+1.5*10*(hours-40);

case2:

zhouxin=20*hours;

zhouxin=20*40+1.5*20*(hours-40);

case3:

zhouxin=40*hours;

zhouxin=40*40+1.5*40*(hours-40);

}

voiddisplay()

cout<

zhouxin:

zhouxin;

zhouixn:

friendostream&

operator<

output,HourWorker&

h);

private:

intk;

inthours;

floatzhouxin;

};

ostream&

output,HourlyWorker&

h)

output<

h.name<

h.age<

h.sex<

pay_per_hour<

returnoutput;

classSalariedWorker:

public:

SalariedWorker();

SalariedWorker(stringn,inta,chars,floatp):

voidCompute_pay(doublehours)

{

switch(k){

case4:

if(hours>

=35)

zhouxin=30*40;

else

zhouxin=30*hours+0.5*30*(35-hours);

case5:

35)

zhouxin=50*40;

zhouxin=50*hours+0.5*50*(35-hours);

}

voiddisplay()

switch(k)

{

friendostream&

output,SalariedWorker&

s);

private:

intk;

inthours;

floatzhouxin;

};

ostream&

s)

output<

s.name<

s.age<

s.sex<

s.pay_per_hour<

returnoutput;

intmain()

{

inti,j;

HourlyWorkera[3];

SalariedWorkerb[2];

for(i=1;

i<

=3;

i++)

cin>

>

a[i].name>

a[i].age>

a[i].sex>

a[i].pay_per_hour;

cout<

a[i].name<

a[i].age<

a[i].sex<

for(j=1;

j<

=2;

j++)

a[j].name>

a[j].age>

a[j].sex>

a[j].pay_per_hour;

a[j].name<

a[j].age<

a[j].sex<

printf("

[1]selectname1\n"

[2]selectname2\n"

printf("

[3]selectname3\n"

[4]selectname4\n"

[5]selectname5\n"

printf{"

Enterchoice:

scanf("

%d"

&

choice);

if(choice==0)break;

else

switch(choice)

{

case1:

pay_per_hour=10;

case2:

pay_per_hour=20;

case3:

pay_per_hour=40;

case4:

pay_per_hour=30;

case5:

pay_per_hour=50;

}

compute_pay(hours);

return0;

虚函数和纯虚函数有什么区别

首先,二者申明不一样。

virtualvoidtest(void);

//虚函数

virtualvoidtest(void)=0;

//纯虚函数

其次,如果一个类包含了一个纯虚函数(哪怕只有一个是纯虚函数),那么它就是一个抽象类——就是不能生成具体的对象!

但如果类中只包含虚函数,那么是可以定义具体的对象的!

但二者又有一个相同点:

都必须在子类中覆盖申明的虚函数!

而不管是虚还是纯虚!

纯虚函数就是只声明了有这种函数但不会给出这个函数的内容所以任何继承了这个函数的子类的成员函数都必须定义这个函数的内容

虚函数声明了有这种函数而且给除了这个函数的内容任何继承了这个函数的子类成员函数如果本身没有定义这个函数的内容就采用基类的这个函数如果子类重新定义了了这个函数那么通过基类的指针就能过根据对象来判断选择哪个函数

定了纯虚函数后,这个类就变成了虚基类,想继承他的类就必须要自己定义这个纯虚函数,不然这个类就可以定义对象,而虚函数不用。

纯虚函数就是没有函数体的,必须在派生类中重载的函数。

虚函数可以有函数体如果派生类中没有重载函数,则用父类的函数。

例:

P213

iostream.h>

classpoint

point(inti=0,intj=0){x0=i;

y0=j;

floatlength()const{return0.0;

virtualvoidset()=0;

virtualvoiddraw()=0;

protected:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2