西安石油大学大二上C++面向对象程序设计课件第5章习题.docx

上传人:b****0 文档编号:9829561 上传时间:2023-05-21 格式:DOCX 页数:16 大小:18.96KB
下载 相关 举报
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第1页
第1页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第2页
第2页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第3页
第3页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第4页
第4页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第5页
第5页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第6页
第6页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第7页
第7页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第8页
第8页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第9页
第9页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第10页
第10页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第11页
第11页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第12页
第12页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第13页
第13页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第14页
第14页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第15页
第15页 / 共16页
西安石油大学大二上C++面向对象程序设计课件第5章习题.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

西安石油大学大二上C++面向对象程序设计课件第5章习题.docx

《西安石油大学大二上C++面向对象程序设计课件第5章习题.docx》由会员分享,可在线阅读,更多相关《西安石油大学大二上C++面向对象程序设计课件第5章习题.docx(16页珍藏版)》请在冰点文库上搜索。

西安石油大学大二上C++面向对象程序设计课件第5章习题.docx

西安石油大学大二上C++面向对象程序设计课件第5章习题

习题5

基本概念题:

.1填空题:

(1)派生类的成员函数可以直接访问基类的成员,不能直接访问基类的______成员。

(2)当保护继承时,基类的成员在派生类中成为保护成员,派生类对象不能直接访问基类的____成员。

(3)在定义一个派生类时,使用__________关键字或者不显式地使用它则表示为__________继承。

(4)若多个基类及其派生类中都定义了同名成员函数,要访问相应函数时,就需要在函数名前加上______和类区分符。

(5)若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以____________的方式直接继承它。

.2选择题:

(1)从一个基类派生出的各个类的对象之间()。

A.共享所有成员变量,每个对象还包含基类的所有属性

B.共享部分成员变量,每个对象还包含基类的所有属性

C.不共享任何成员变量,但每个对象还包含基类的所有属性

D.共享部分成员变量和成员函数

(2)如果是类B在类A的基础上构造,那么,就称()。

A.类A为基类或父类,类B为超类或子类

B.类A为基类、父类或超类,类B为派生类或子类

C.类A为派生类,类B为基类

D.类A为派生类或子类,类B为基类、父类或超类

(3)C++的继承性允许派生类继承基类的()。

A.部分特性,并允许增加新的特性或重定义基类的特性

B.部分特性,但不允许增加新的特性或重定义基类的特性

C.所有特性,并允许增加新的特性或重定义基类的特性

D.所有特性,但不允许增加新的特性或重定义基类的特性

(4)派生类的成员函数可以直接访问基类的()成员。

A.所有B.公有和保护C.保护和私有D.私有

(5)对于公有继承,基类的公有和保护成员在派生类中将()成员。

A.全部变成公有B.全部变成保护

C.全部变成私有D.仍然相应保持为公有和保护

(7)对于公有继承,基类中的私有成员在派生类中将()。

A.能够直接使用成员名访问B.能够通过成员运算符访问

C.仍然是基类的私有成员D.变为派生类的私有成员

(8)当保护继承时,基类的()在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。

A.任何成员B.公有成员和保护成员

C.保护成员和私有成员D.私有成员

(9)在定义一个派生类时,若不使用保留字显式地规定采用何种继承方式,则默认为()方式。

A.私有继承B.非私有继承

C.保护继承D.公有继承

(10)建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数。

A.自己所属类、对象成员所属类、基类

B.对象成员所属类、基类、自己所属类

C.基类、对象成员所属类、自己所属类

D.基类、自己所属类、对象成员所属类

(11)当派生类中有和基类一样名字的成员时,一般来说,()。

A.将产生二义性B.派生类的同名成员将覆盖基类的成员

C.是不能允许的D.基类的同名成员将覆盖派生类的成员

(12)C++中的虚基类机制可以保证:

()。

A.限定基类只通过一条路径派生出派生类

B.允许基类通过多条路径派生出派生类,派生类也就能多次继承该基类

C.当一个类多次间接从基类派生后,派生类对象能保留多份间接基类的成员

D.当一个类多次间接从基类派生后,其基类只被一次继承

(13)下列对派生类的描述中错误的说法是:

()。

A.派生类至少有一个基类

B.派生类可作为另一个派生类的基类

C.派生类除了包含它直接定义的成员外,还包含其基类的成员

D.派生类所继承的基类成员的访问权限保持不变

(14)派生类的对象对其基类中()可直接访问。

A.公有继承的公有成员B.公有继承的私有成员

C.公有继承的保护成员D.私有继承的公有成员

.3什么叫基类?

什么叫派生类?

基类中保护成员的访问权限有什么意义?

.4公有继承、私有继承和保护继承方式下,基类中的私有成员、保护成员和公有成员,在派生类内和在类外两种情况下的访问权限是什么?

.5某个类的对象能直接调用该类的私有成员和保护成员吗?

.6什么叫派生类中的基类子对象?

.7从基类公有继承产生派生类时,基类中的构造函数和析构函数能被派生类继承吗?

.8怎样设计派生类的构造函数?

.9什么叫派生类覆盖基类的成员函数?

派生类覆盖基类的成员函数有什么设计要求?

.10什么叫派生类重载基类的成员函数?

派生类重载基类的成员函数有什么设计要求?

.11叙述基类和派生类的赋值兼容规则。

赋值兼容规则有什么意义?

.1212.比较派生类对基类成员函数重载和派生类对基类成员函数覆盖两者的相同点和不同点。

.13什么叫多重继承?

什么叫公共基类?

举例说明多重继承中成员变量的二义性问题和成员函数的二义性问题。

.14什么叫虚基类?

怎样解决多重继承中成员变量的二义性问题?

怎样解决多重继承中成员函数的二义性问题?

.15下面的类中,哪些成员函数是重载?

哪些成员函数是覆盖?

classCar

{

public:

Car()

{}

voidf(intc)

{}

voidd()

{}

};

classSportsCar:

publicCar

{

public:

SportsCar()

{}

SportsCar(ints)

{}

voidf(intc)

{}

voidf(floatd)

{}

};

.16对于上题的Car类和SportsCar类,如果增加如下主函数,说明系统匹配各对象调用的成员函数分别是什么?

voidmain(void)

{

CarmyCar;

SportsCarmySportsCar;

intc=5;

floatd=5.0;

myCar.f(c);

mySportsCar.f(c);

mySportsCar.f(d);

mySportsCar.d();

}

程序阅读和设计题:

.17阅读程序,给出运行结果:

(1)

#include"iostream.h"

classA

{

private:

inta,b;

public:

A(inti,intj)

{

a=i;

b=j;

}

voidmove(intx,inty)

{

a+=x;

b+=y;

}

voidshow()

{

cout<

}

};

classB:

privateA

{

private:

intx,y;

public:

B(inti,intj,intk,intl):

A(i,j)

{

x=k;

y=l;

}

voidshow()

{

cout<

}

voidfun()

{

move(2,4);

}

voidf1()

{

A:

:

show();

}

};

voidmain()

{

Aa1(10,10);

a1.show();

Bb1(5,5,6,6);

b1.fun();

b1.show();

b1.f1();

}

(2)

#include

classPoint{

intx,y;

public:

Point(intx1=0,inty1=0):

x(x1),y(y1){

cout<<"Point:

"<

}

~Point(){

cout<<"Pointdestructor!

\n";

}

};

classCircle{

Pointcenter;//圆心位置

intradius;//半径

public:

Circle(intcx,intcy,intr):

center(cx,cy),radius(r){

cout<<"Circleradius:

"<

}

~Circle(){cout<<"Circledestructor!

\n";}

};

voidmain()

{

Circlec(3,4,5);

}

(3)

#include

#include

classPoint{

intx,y;

public:

Point(intx1=0,inty1=0):

x(x1),y(y1){

cout<<"Point:

"<

}

~Point(){

cout<<"Pointdes!

\n";

}

};

classText{

chartext[100];//文字内容

public:

Text(char*str){

strcpy(text,str);

cout<<"Textcon!

\n";

}

~Text(){cout<<"Textdes!

\n";}

};

classCircleWithText:

publicPoint,publicText{

public:

CircleWithText(intcx,intcy,char*msg):

Point(cx,cy),Text(msg){

cout<<"PointwithTextcon!

\n";

}

~CircleWithText(){cout<<"PointwithTextdes\n";}

};

voidmain()

{

CircleWithTextcm(3,4,"hello");

}

(4)

#include

classDate

{

public:

voidSetDate(inty,intm,intd){Year=y;Month=m;Day=d;}

voidPrintDate(){cout<

Date(){SetDate(2000,1,1);}

Date(inty,intm,intd){SetDate(y,m,d);}

protected:

intYear,Month,Day;

};

classTime

{

public:

voidSetTime(inth,intm,ints){Houre=h;Minutes=m;Seconds=s;}

voidPrintTime()

{cout<

"<

"<

Time(){SetTime(0,0,0);}

Time(inth,intm,ints){SetTime(h,m,s);}

protected:

intHoure,Minutes,Seconds;

};

classDate_Time:

publicDate,publicTime

{

public:

Date_Time():

Date(),Time(){};

Date_Time(inty,intmo,intd,inth,intmi,ints):

Date(y,mo,d),Time(h,mi,s){}

voidPrintDate_Time(){PrintDate();PrintTime();}

};

voidmain()

{

Date_Timedt_a,dt_b(2002,10,1,6,0,0);

dt_a.PrintDate_Time();

dt_b.SetTime(23,59,59);

dt_b.PrintDate_Time();

dt_a.SetDate(2002,12,31);

dt_a.PrintDate_Time();

}

(5)

#include

classDate

{

public:

Date(inty=2001,intm=1,intd=1){Year=y;Month=m;Day=d;}

voidPrintDate(){cout<

protected:

intYear,Month,Day;

};

classTime

{

public:

Time(inth=5,intm=30,ints=0){Houre=h;Minutes=m;Seconds=s;}

voidPrintTime()

{cout<

"<

"<

protected:

intHoure,Minutes,Seconds;

};

classDate_Time:

publicDate,publicTime

{

public:

Date_Time(){};

Date_Time(inty,intmo,intd,inth=0,intmi=0,ints=0):

Date(y,mo,d),Time(h,mi,s){}

voidPrintDate_Time(){PrintDate();PrintTime();}

};

voidmain()

{

Date_Timea,b(2002,10,1,6,20,0),c(2003,3,8,6,7);

a.PrintDate_Time();

b.PrintDate_Time();

c.PrintDate_Time();

}

(6)

#include

classBase

{

public:

Base(inti,intj){x0=i;y0=j;}

voidMove(intx,inty){x0+=x;y0+=y;}

voidShow(){cout<<"Base("<

private:

intx0,y0;

};

classDerived:

privateBase

{

public:

Derived(inti,intj,intm,intn):

Base(i,j){x=m;y=n;}

voidShow(){cout<<"Next("<

voidMove1(){Move(2,3);}

voidShow1(){Base:

:

Show();}

private:

intx,y;

};

voidmain()

{

Baseb(1,2);

b.Show();

Derivedd(3,4,10,15);

d.Move1();

d.Show();

d.Show1();

}

(7)

#include

classPoint

{

public:

voidInitP(floatx0=0,floaty0=0){X=x0;Y=y0;}

voidMove(floatxf,floatyf){X+=xf;Y+=yf;}

floatGetX(){returnX;}

floatGetY(){returnY;}

private:

floatX,Y;

};

classRectangle:

publicPoint

{

public:

voidInitR(floatx,floaty,floatw,floath){

InitP(x,y);W=w;H=h;

}

voidZoomR(floatk){W*=k,H*=k;}

floatGetH(){returnH;}

floatGetW(){returnW;}

private:

floatW,H;

};

voidmain()

{

Rectanglerect;

rect.InitR(10,20,30,40);

cout<

<

rect.Move(5,6);

cout<

<

rect.ZoomR(7);

cout<

<

}

.18设计一个点类,它仅包含两个属性:

横坐标和纵坐标。

通过继承点类再设计一个圆类,它除了有一个圆心,还有半径,还应该能够计算圆的周长和面积等。

编写一个测试程序来测试所设计的类能否实现预定的功能。

.19设计一个动物类,它包含一些动物的属性,例如名称、大小、重量等,动物可以跑或走。

然后设计一个鸟类,除了动物的基本属性外,它还有自己的羽毛、翅膀等,鸟除了跑或走外,它还可以飞翔。

为了继承动物类的特性,鸟类应该继承动物类。

编写一个测试程序来测试所设计的鸟类能否实现预定的功能。

.20先设计一个长方形类,再通过继承长方形类设计一个正方形类,正方形类中通过覆盖父类的成员函数得到一些新的功能。

.21先设计一个基本账户类,再通过继承基本账户类设计一个储蓄帐户类,储蓄帐户类中增加一个静态成员变量(年利率),并增加如下成员函数:

(1)计算月利息:

存款金额*年利率/12

(2)更改利率(静态方法):

重新设置年利率

最后,编写一个测试程序来测试所设计的储蓄帐户类能否实现预定的功能。

.22先设计一个基本账户类,再通过继承基本账户类设计一个储蓄帐户类,储蓄帐户类中增加密码、地址、最小余额和利率等成员变量,并增加一些银行帐户经常用到的成员函数,要求:

(1)类中的成员函数具有输入、输出储户上述信息的功能。

(2)将账号设计成不可更改。

(3)修改密码时要提供原密码。

.23在阅读5.6.1节内容的基础上,进一步分析图书馆的图书和杂志管理和借阅方式,设计一个基本符合图书馆实际工作方式的图书和杂志借阅系统。

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

当前位置:首页 > 小学教育 > 语文

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

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