面向对象程序设计C++B卷答案Word文档下载推荐.docx

上传人:b****3 文档编号:16968379 上传时间:2022-11-27 格式:DOCX 页数:10 大小:19.36KB
下载 相关 举报
面向对象程序设计C++B卷答案Word文档下载推荐.docx_第1页
第1页 / 共10页
面向对象程序设计C++B卷答案Word文档下载推荐.docx_第2页
第2页 / 共10页
面向对象程序设计C++B卷答案Word文档下载推荐.docx_第3页
第3页 / 共10页
面向对象程序设计C++B卷答案Word文档下载推荐.docx_第4页
第4页 / 共10页
面向对象程序设计C++B卷答案Word文档下载推荐.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

面向对象程序设计C++B卷答案Word文档下载推荐.docx

《面向对象程序设计C++B卷答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计C++B卷答案Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。

面向对象程序设计C++B卷答案Word文档下载推荐.docx

4、下列的各类函数中,不是类的成员函数的是(C)。

A)构造函数B)析构函数C)友元函数D)复制构造函数

5、( 

B)是不可以作为该类的成员的。

A)自身类对象的指针 

B)自身类的对象

C)自身类对象的引用 

D)另一个类的对象

6、下列关于类的继承描述中,(A 

)是错误的。

派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数 

派生类也是基类,但基类不一定具有派生类的全部属性和方法 

继承描述类的层次关系,派生类可以具有与基类相同的属性和方法

D) 

一个基类可以有多个派生类,一个派生类可以有多个基类

7、下列关于静态数据成员的描述中,正确的是( 

A)静态数据成员是类的所有对象共享的数据

B)类的每个对象都有自己的静态数据成员

C)类的不同对象有不同的静态数据成员值

D)静态数据成员不能通过类的对象调用

8、已知在一个类体中包含如下函数原型:

Volume 

operator-(Volume)const;

,下列关于这个函数的叙述中,错误的是( 

A)这是运算符-的重载运算符函数 

B)这个函数所重载的运算符是一个一元运算符

C)这是一个成员函数 

D)这个函数不改变类的任何数据成员的值

9、带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化( 

)。

与虚基类下面的派生类个数有关 

B)多次

C)二次 

一次

10、下列关于类模板的描述中,错误的是(D)。

A.类模板的成员函数都是模板函数

B.可以为类模板参数设置默认值

C.类模板描述了一组类

D.类模板中只允许有一个类型参数

二、判断题(每题1分,共10分)

1、在保护继承中,对于垂直访问同于公有继承,而对于水平访问同于私有继承。

√ 

2、析构函数是一种函数体为空的成员函数。

×

3、重载函数必须有不同的参数列表。

4、可以用delete释放不是用new运算符分配的内存。

5、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。

6、关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。

7、公有继承可以实现子类型。

8、纯虚函数是在基类中说明的虚函数,它在该基类中没有定义具体的操作内容。

9、引用是某个变量的别名,对引用的操作就是对被引用变量的操作。

10、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。

三、填空题(每题2分,共20分)

1、类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的 

数据成员,共同行为被描述为类中的成员函数。

2、假定A是一个类名,则该类的拷贝构造函数的原型说明语句为:

A(constA&

a) 

3、在派生类的成员中有私有成员、 

保护成员 

、公有成员 

、不可访问成员 

四类成员。

4、从实现的角度划分,C++所支持的两种多态性分别是编译时的多态性和运行时的多态性。

实现运行时多态,要使用 

虚 

函数。

7、带有 

纯虚函数 

的类称为抽象类,抽象类的特征是不能声明一个抽象类的 

对象 

,但可以声明一个抽象类的指针或引用。

5、若需要把一个函数“void 

F( 

);

”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:

friendvoidF(AB&

);

8、有如下类定义:

class 

Sample{ 

public:

Sample();

~Sample();

private:

static 

data;

};

将静态数据成员data初始化为0的语句是 

intSample:

:

data=0;

6、对双目运算符,被重载为成员函数时,有一个参数,被重载为友元函数时,有两个参数。

9、列出C++中的两种代码复用方式:

继承 

和 

模板 

10、已知 

sum(int 

n){return 

n+n;

long 

sum(long 

是一个函数模板的两个实例,则该函数模板的定义是 

( 

template 

<

typename 

T>

sum(T 

四、程序阅读题(共10分)

1、(4分)写出执行下面程序的输出结果。

213312

#include<

iostream>

using 

namespace 

std;

classPart{

Part(intx=0):

val(x){cout<

val;

}

~Part(){cout<

intval;

classWhole{

Whole(intx,inty,intz=0):

p2(x),p1(y),val(z){cout<

~Whole(){cout<

}

Partp1,p2;

intval;

intmain(){

Wholeobj(1,2,3);

return0;

2、(3分)写出执行下面程序的输出结果。

const:

val=10val=20 

classMyClass{

MyClass(intx):

val(x){}

voidprint()const{cout<

"

val="

val<

'

\t'

;

voidprint(){cout<

intmain(){

constMyClassobj1(10);

MyClassobj2(20);

obj1.print();

obj2.print();

return0;

3、(3分)写出执行下面程序的输出结果。

classBase{

voidfun1(){cout<

Base\n"

virtualvoidfun2(){cout<

classDerived:

publicBase{

voidfun1(){cout<

Derived\n"

voidfun2(){cout<

voidf(Base&

b){b.fun1();

b.fun2();

intmain()

{

Derivedobj;

f(obj);

Base

Derived

四、程序改错题(每处2分,共10分)

有一个源程序文件proj.cpp,其中编号为①、②、③、④、⑤的语句有错误。

请修改这些错误,使程序的输出结果为:

12345678910。

源程序文件proj.cpp清单如下:

#include<

usingnamespacestd;

#include 

MyClass{

voidMyClass(int 

len)-------------①MyClass(intlen)

array 

new 

int[len];

arraySize 

len;

for(int 

0;

arraySize;

i++) 

array[i] 

i+1;

~MyClass(){

delete 

array[];

-------------②delete[]array;

void 

Print() 

const 

for(int 

cin 

--------------③cout<

array[i]<

'

cout 

endl;

int 

*array;

main()

{MyClass 

obj;

---------------④MyClassobj(10);

MyClass*p=&

obj;

p.Print();

---------------⑤p->

Print();

return 

六、程序设计题(共30分)

1、(5分)编写一个对具有n个数组元素(通用类型)的数组进行升序排序的函数模板。

2、(10分)定义一个商品类CGoods,其中包含商品号(long 

no)、商品名(char 

*p_name)、商品价格(double 

price)三个数据成员,以及相应的构造函数、拷贝构造函数、析构函数、打印数据成员的成员函数。

3、(15分) 

以CGoods类为基类,派生出服装类CClothes和食品类CFood两个派生类,并在这两个类中分别增加一个表示品牌的指针数据成员(char 

*p_brand)和表示用途的成员函数(void 

usedFor()——可分别输出一条表示服装和食品用途的信息)。

为了能够采用动态联编的方式调用派生类的usedFor()成员函数,应该在CGoods类及其派生类CClothes和CFood类中作何改动?

写出CClothes类和CFood类的完整定义(包括构造、析构和usedFor()成员函数的实现)。

1.#include<

template<

classT>

voidbubbleSort(Ta[],intn)

{inti,j;

Ttemp;

for(i=1;

i<

n;

i++)

for(j=0;

j<

n-i;

j++)

if(a[j]>

a[j+1]){temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

voidprint(Ta[],intn){

for(inti=0;

i++)cout<

a[i]<

"

cout<

endl;

intmain(){

inta[]={2,3,1,6,43,22};

doubleb[]={2.3,3.2,1.6,-6.0,4.3,2.2};

print(a,6);

bubbleSort(a,6);

print(b,6);

bubbleSort(b,6);

2.#include<

string.h>

classCGoods{

longno;

char*p_name;

doubleprice;

CGoods(longno_val,char*p_val,floatprice_val);

CGoods(constCGoods&

r_good);

~CGoods(){delete[]p_name;

}

voidprint()const;

virtualvoidusedFor()=0;

CGoods:

CGoods(longno_val,char*p_val,floatprice_val){

no=no_val;

p_name=newchar[strlen(p_val)+1];

strcpy(p_name,p_val);

price=price_val;

CGoods(constCGoods&

r_good)

{

no=r_good.no;

p_name=newchar[strlen(r_good.p_name)+1];

strcpy(p_name,r_good.p_name);

price=r_good.price;

voidCGoods:

print()const{

cout<

Coursenumber:

<

no<

Coursename:

p_name<

Courseprice:

price<

3.classCClothes:

publicCGoods{

char*p_brand;

CClothes(longno_val,char*p_val,floatprice_val,char*p_brandby):

CGoods(no_val,p_val,price_val)

{

p_brand=newchar[strlen(p_brandby)+1];

strcpy(p_brand,p_brandby);

}

~CClothes(){deletep_brand;

voidusedFor(){cout<

Usedfordressing"

classCFood:

publicCGoods{

CFood(longno_val,char*p_val,floatprice_val,char*p_brandby):

{p_brand=newchar[strlen(p_brandby)+1];

strcpy(p_brand,p_brandby);

~CFood(){delete[]p_brand;

Usedforeating"

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

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1