面向对象程序设计C++A卷答案Word文件下载.docx

上传人:b****6 文档编号:20887967 上传时间:2023-01-26 格式:DOCX 页数:13 大小:65.34KB
下载 相关 举报
面向对象程序设计C++A卷答案Word文件下载.docx_第1页
第1页 / 共13页
面向对象程序设计C++A卷答案Word文件下载.docx_第2页
第2页 / 共13页
面向对象程序设计C++A卷答案Word文件下载.docx_第3页
第3页 / 共13页
面向对象程序设计C++A卷答案Word文件下载.docx_第4页
第4页 / 共13页
面向对象程序设计C++A卷答案Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

面向对象程序设计C++A卷答案Word文件下载.docx

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

面向对象程序设计C++A卷答案Word文件下载.docx

D)类和对象的关系是一种数据类型与变量的关系

4、(C)不是构造函数的特征。

A)构造函数的函数名与类名相同 

B)构造函数可以重载 

C)构造函数不可以设置缺省参数 

D)构造函数无须指定类型说明

5、友元的作用是(A 

)。

A)提高程序的运用效率 

 

B)加强类的封装性 

C)实现数据的隐藏性 

D)增加成员函数的种类

6、下列关于运算符重载的叙述中,正确的是( 

A)通过运算符重载,可以定义新的运算符

B)有的运算符只能作为成员函数重载

C)若重载运算符+,则相应的运算符函数名是+

D)重载二元运算符时,必须声明两个形参

7、设置虚基类的目的是( 

A)简化程序 

B)消除二义性 

C)提高运行效率 

D)减少目标代码 

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

Volume 

operator-(Volume)const;

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

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

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

C)这是一个成员函数 

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

9、关于子类型的描述中,(A 

)是错误的。

A)子类型就是指派生类是基类的子类型;

B)一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型;

C)在公有继承下,派生类是基类的子类型;

D)子类型关系是不可逆的。

10、下列是模板声明的开始部分,其中正确的是(C)。

A)template<

T>

B)template<

classT1,T2>

C)template<

classT1,classT2>

D)template<

classT1;

classT2>

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

1、C++语言引入类主要起两个作用:

数据封装和类型定义。

2、只要是类M继承了类N,就可以说类M是类N的子类型。

×

3、构造函数可以声明为虚函数。

4、多继承情况下,派生类的构造函数的执行顺序取决于成员初始化列表中的顺序。

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

6、用new动态分配的内存是在堆中分配的,而不是在栈中分配的。

√ 

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

8、如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。

9、通过使用不同的类型参数,函数模板可以生成不同类型的函数。

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

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

1、任何类中允许有三种访问权限的数据,这三种访问权限分别是 

public 

、private、 

protected 

,默认访问权限为private(或私有)。

2、类Sample的构造函数将形参data赋值给数据成员data。

请将类定义补充完整。

class 

Sample{

public:

Sample(int 

data=0);

private:

int 

data;

};

Sample:

:

data){ 

this->

data=data;

}

3、设px是指向一个类动态对象的指针变量,则执行“delete 

px”语句时,将自动调用该类的析构函数。

4、当一个函数或一个类希望能够直接访问另一个类中的非公用成员时,应该将该函数或该类声名为另一个类的友元函数或友元类。

5、在MyClass 

类的定义中,对赋值运算符=进行重载。

请将画线处缺失的部分补充完整。

MyClass&

MyClass:

operator=(const 

MyClass 

&

rhs) 

if(this==&

return 

*this;

value=rhs.value;

6、设A为test类的对象且赋有初值,则语句test 

B(A);

表示用已经存在的对象A初始化正在被创建的同类新对象B 

7、函数重载时要求同名函数的参数类型 

或 

个数不同,否则无法确定是哪个函数。

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

实现运行时多态,要使用 

虚 

函数。

9、带有 

纯虚函数 

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

对象 

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

10、一个 

类模板 

允许用户为类定义一种模式,使得类中某些数据成员、某些成员函数的参数和返回值能取任意数据类型。

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

1、写出执行下面程序的输出结果。

9SS9S

#include<

iostream>

using 

namespace 

std;

A{

a;

A():

a(9){} 

virtual 

void 

print() 

const 

{cout<

<

B:

public 

char 

b;

B(){b= 

‘S’;

print()const

show(A&

X){X.print();

main() 

d1,*p;

d2;

p=&

d1.print();

d2.print();

p->

print();

show(d1);

show(d2);

0;

2、写出执行下面程序的输出结果。

classPart{

Part(){cout<

"

classPart"

endl;

}

classA

{public:

A(char*s){cout<

s<

}

~A(){}

classB:

virtualpublicA

B(char*s1,char*s2):

A(s1)

{cout<

s2<

classC:

virtualpublicA{

C(char*s1,char*s2):

A(s1){cout<

classD:

publicC,publicB{

Partp;

D(char*s1,char*s2,char*s3,char*s4):

B(s1,s2),C(s1,s3),A(s1)

{cout<

s4<

intmain()

{

D*p=newD("

classA"

"

classB"

classC"

classD"

);

deletep;

return0;

结果:

classA

classC

classB

classPart

classD

五、程序改错题(每个错误2分,共10分)

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

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

#include<

usingnamespacestd;

cstring>

classCBook{

char*p_book;

voidCBook(constchar*p_val)-----------①去掉void

{

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

strcpy(p_book,p_val);

voidprint()const;

~CBook(){deletep_book[];

}-----------②去掉[]

intmain(){

charbook_title[60];

CBook*p_book_obj;

cout<

"

Enterbooktitle:

;

cin>

>

book_title;

CBookabook;

--------------③改成CBookabook(book_title);

p_book_obj=&

abook;

p_book_obj.print();

-----------④改成p_book_obj-〉print();

voidprint()const-----------⑤改成voidCBook:

{cout<

p_book<

endl;

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

1、(15分)编写一个实现两个数交换的函数模板swap,然后使用该函数模板再编写一个对具有n个数组元素(通用类型)的数组采用冒泡排序算法进行排序的函数模板。

2、(15分)编写一个程序计算“三角形(triangle)、正方形(square)、圆形(circle)”三种图形的面积,要求:

(1)抽象出一个基类Base,在其中说明一个虚函数用来求面积;

(2)利用派生类定义三角形、正方形、圆形;

(3)编写主函数并测试。

1、#include<

template<

classT>

voidswap(T&

a,T&

b){

Ttemp;

temp=a;

a=b;

b=temp;

voidbubbleSort(Ta[],intn)

{inti,j;

for(i=1;

i<

n;

i++)

for(j=0;

j<

n-i;

j++)

if(a[j]>

a[j+1])swap(a[j],a[j+1]);

classT1>

voidprint(T1a[],intn){

for(inti=0;

i++)cout<

a[i]<

cout<

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、class 

Base 

double 

area(double 

s=0);

Triangle:

base 

D,H;

Triangle 

(double 

d=0,double 

h=0) 

D=d;

H=h;

area() 

s;

s=(D*H)/2;

display() 

cout<

三角形的底和高:

D<

‘’<

H<

三角形的面积:

area()<

Square:

L;

Square(double 

l=0) 

L=l;

s=L*L;

cout<

正方形的边长为:

L<

正方形的面积为:

Circle:

R;

Circle(double 

r=0) 

R=r;

s=3.14*R*R;

圆的半径:

R<

圆形的面积为:

Shape*p=NULL;

Trianglet(3,4,5);

Squares

(2);

Circlec(3);

t;

三角形的面积为:

c;

圆的面积为:

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

当前位置:首页 > 求职职场 > 职业规划

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

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