C++期末考试复习题Word格式.docx

上传人:b****6 文档编号:20917164 上传时间:2023-01-26 格式:DOCX 页数:18 大小:24.32KB
下载 相关 举报
C++期末考试复习题Word格式.docx_第1页
第1页 / 共18页
C++期末考试复习题Word格式.docx_第2页
第2页 / 共18页
C++期末考试复习题Word格式.docx_第3页
第3页 / 共18页
C++期末考试复习题Word格式.docx_第4页
第4页 / 共18页
C++期末考试复习题Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C++期末考试复习题Word格式.docx

《C++期末考试复习题Word格式.docx》由会员分享,可在线阅读,更多相关《C++期末考试复习题Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

C++期末考试复习题Word格式.docx

C.B:

func1()是虚函数,而A:

func2()不是虚函数D.B:

func1()不是虚函数,而A:

func2()是虚函数

第二部分非选择题(共80分)

二、填空题(本大题共10小题,每小题2分,共20分)

11.定义类的动态对象数组时,系统只能够自动调用该类的_无参_______构造函数对其进行初始化。

12.在C++程序设计中,建立继承关系倒挂的树应使用____单_一____继承。

13.表达式cout<

end1还可表示为____cout<

`\n`_____。

14.基类的公有成员在派生类中的访问权限由___访问控制_____决定。

++支持的两种多态性分别是__编译时的_(操作重载)_静态_____多态性和_运行时的(虚函数)___动态_____多态性。

++中语句constchar*constp=″hello″;

所定义的指针p和它所指的内容都不能被__改变(重新赋值)____。

17.假定AB为一个类,则语句AB(AB&

x);

为该类_____拷贝____构造函数的原型说明。

18.将关键字const写在成员函数的____函数头_____和____函数体_____之间时,所修饰的是this指针。

19.在C++中,访问一个对象的成员所用的运算符是__·

___,访问一个指针所指向的对象的成员所用的运算符是__>

___。

20.派生类从一个或多个以前定义的该类的__基类__

一、单项选择题(每题2分,共20分)

1.派生类对象可访问基类中的什么成员( 

A)

A.公有继承的公有成员 

 

B.公有继承的私有成员 

C.公有继承的保护成员 

D.私有继承的公有成员

2.定义析构函数时,应该注意( 

A.其名与类名完全相同 

B.返回类型是void类型 

C.无形参,也不可重载 

D.函数体中必须有delete语句

3.如果类A被说明成类B的友元,则(D 

)。

A.类A的成员即类B的成员 

B.类B的成员即类A的成员 

C.类A的成员函数不得访问类B的成员 

D.类B不一定是类A的友元 

4.应在下列程序划线处填入的正确语句是(C)

#include

class 

Base

 public:

void 

fun(){cout<

"

Base:

fun"

endl;

}

};

Derived:

public 

 void 

fun()

{_____________ 

();

C.Base:

fun();

 

D. 

Base->

5.面向对象程序设计将数据与( 

)放在一起,做为一个相互依存、不可分割的整体来处理。

A.对数据的操作B.信息C.数据隐藏D.数据抽象

6.在类中声明转换函数时不能指定( 

A.参数 

B.访问权限 

C.操作 

D.标识符 

7.在派生类中重新定义虚函数时必须在( 

)方面与基类保持一致。

A.参数类型 

B.参数名字 

C.操作内容 

D.赋值

8.下面关于C++中类的继承与派生的说法错误的是(C)。

A.基类的protected成员在公有派生类的成员函数中可以直接使用

B.基类的protected成员在私有派生类的成员函数中可以直接使用

C.公有派生时,基类的所有成员访问权限在派生类中保持不变

D.基类的protected成员在保护派生类的成员函数中可以直接使用

9.重载赋值操作符时,应声明为( 

)函数。

A.友元 

B.虚 

C.成员 

D.多态

10.语句 

ofstream 

f(″″,ios:

binary);

的功能是建立流对象 

f,试图打开文件 

并与之连接,并且 

(A 

) 

A. 

若文件存在,将文件写指针定位于文件尾;

若文件不存在,建立一个新文件 

B. 

若文件存在,将其置为空文件;

若文件不存在,打开失败 

C. 

若文件存在,将文件写指针定位于文件首;

D. 

若文件存在,打开失败;

二、填空题(每空2分,共30分)

1.假定 

AB 

为一个类,则语句 

AB(AB&

x) 

为该类 

_________ 

复制构造函数的原型说明。

2.C++ 

支持的两种多态性分别是 

________编译时的_ 

多态性和 

运行时的_________ 

多态性。

3.定义类的动态对象数组时,系统只能够自动调用该类的 

无参的_________ 

构造函数对其进行初始化。

4.运算符重载时,其函数名由__operator运算符_构成。

成员函数重载双目运算符时,左操作数是_当前对象__,右操作数是__函数形参_。

C++标准库中的异常层次的根类为exception_____类;

MFC类库中绝大多数类都源自根类__CObject_____类。

在下面横线处填上适当字句,完成类中成员函数的定义。

A{ 

int 

a;

A(int 

aa=0) 

a=_newint(aa)______;

在下面选项中,对类的拷贝构造函数的声明形式是(B)

A(&

)B.A:

A(constA&

)C.A:

A(A)D.voidA:

A(A&

a)

2.下面关于成员函数特征的描述中,错误的是(A)

A.成员函数不可以设置参数的默认值B.成员函数可以重载C.成员函数可以是内联函数D.成员函数可以是静态的

3.下面关于类模板叙述不正确的是(B)

A.可以有多个构造函数B.类模板是模板类的实例C.一个类模板可以用来实例化多个模板类D.类模板可以有多个参数

4.要使一个类成为抽象类,这个类应具有的条件是(A)

A.至少有一个纯虚函数 

B.至少有一个虚函数C.只含有一个纯虚函数 

只含有一个虚函数

5.有关运算符重载正确的描述是(D)

A.C++语言允许在重载运算符时改变运算符的操作个数B.C++语言允许在重载运算符时改变运算符的优先级

C.C++语言允许在重载运算符时改变运算符的结合性D.C++语言允许在重载运算符时改变运算符的原来的功能

6.下列说法正确的是(D)。

A.一个类的对象可以是另一个类的成员B.一个类可以作为另一个类的派生类

C.一个类可以在另一个类定义体进行定义D.以上说法均正确

7.有如下程序:

#include<

>

classBASE{

charc;

BASE(charn):

c(n){}

virtual~BASE(){cout<

c;

classDERIVED:

publicBASE

{

charc;

DERIVED(charn):

BASE(n+1),c(n){}

~DERIVED(){cout<

intmain()

{

DERIVED('

X'

);

return0;

}

执行上面的程序将输出(C)。

A)X 

B)YX 

C)XY 

D)Y

8.类MyClass的定义如下:

classMyClass

{public:

MyClass(){value=0;

SetValue(inti){value=i;

private:

intvalue;

则对语句:

MyClass*p,my;

p=&

my;

正确的描述是(D)。

A.语句p=&

是把对象my赋值给指针变量p;

B.语句MyClass*p,my;

会调用两次类MyClass的构造函数

C.对语句*(5)的调用是正确的D.语句p->

SetValue(5)与(5)等价

9.下列各类函数中,C不是类的成员函数。

A.构造函数B.析构函数C.友元函数D.拷贝构造函数

10. 

派生类的对象对它的基类成员中A是可以访问的。

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

1.定义内联函数所用的关键字inline,定义友元所用的关键字为friend。

2.当一个派生类具有多个基类时,这种继承方式称为_多重继承__。

3.通过一个构造函数调用虚函数时,C++系统对该调用采用静态联编。

4.任何类中允许有_privated____、public____、_protected____三种访问控制类型的成员,数据成员和成员函数的默认类型为__privated___。

5.只有在公有继承的情况下,基类和派生类之间才有赋值兼容性规则。

6.C++标准库中的异常层次的根类定义在库的头文件_

______中。

7.运算符重载使用的两种方式是_____成员函数______和友元函数_______。

8.C++支持面向对象程序设计的四个要素是:

抽象性、多态性________、封装性________和____继承性____。

1.下面有关构造函数和new运算符关系正确的说法是(D)

A.new运算符不调用构造函数B.构造函数一定调用new运算符

C.当生成新类的实例时,先调用new运算符,然后调用构造函数进行初始化

D.当new运算符动态产生类的对象时,new运算符也自动调用构造函数

2.下面有关类性质的说法错误的是(D)

A.一个类可以有多个构造函数,但只有一个析构函数B.析构函数和构造函数都不能有返回类型

C.不能给析构函数指定参数D.一个类中不可以声明具有类类型的数据成员

3.下面关于友元函数描述正确的是(C)

A.友元函数是类的成员B.友元函数在类的外部声明C.友元函数在类中声明D.友元函数能够派生

4.下面叙述正确的是(D)

A.派生类不可以使用私用派生B.保护派生时,基类的保护成员在派生类中是公有的

C.对基类成员的访问允许二义性D.赋值兼容规则也适用于多重继承的组合

5.有关运算符重载正确的描述是(D)

6.下面描述中,表达错误的是(B)?

A.公有继承时基类中的public成员在派生类中仍是public的B.公有继承是基类中的private成员在派生类中仍是private的  

C.公有继承时基类中的protected成员在派生类中仍是protected的

D.私有继承时基类中的public成员在派生类中是private的

7.拷贝构造函数的参数是(C)

A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名

8.下列关于构造函数的描述中,错误的是(D)

A.构造函数可以设置默认参数B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数D.构造函数不可以重载

9.数组作为函数的形参时,把数组名作为实参,传递给函数的是(A)

A.该数组的首地址B.该数组的元素个数C.该数组中的各元素值D.该数组的大小

10.通过一个析构函数调用虚函数时,C++系统对该调用采用( B)。

A.动态联编B.静态联编C.不确定是哪种联编D.函数重载

1.成员名限定的符号是:

,它可以在引用成员时避免二义性。

2.只有在公有继承的情况下,基类和派生类之间才有赋值兼容性规则。

3.模板分为类模板和函数模板。

4.在用class定义一个类时,数据成员和成员函数的默认访问权限是private。

5.已知intDBL(intn){returnn+n;

}和longDBL(longn){returnn+n;

}是一个函数模板的两个实例,则该函数模板的定义是template<typename T> T DBL(T n){return n+n}。

(要求写出函数模板的完整定义)

6.静态数据成员必须在类外进行初始化。

7.含有纯虚函数的类称为抽象类。

8.若Queue是一个类,aQueue是它的一个对象,而且该类中定义了一个静态成员函数show()则在类外对该成员的函数进行调用的方式可以为()和Queue:

show()。

9.定义内联函数所用的关键字为inline,定义友元所用的关键字为friend。

10.使用成员函数重载运算符时,若运算符是二元的,则参数表中有1个操作数,此时 当前对象作为此运算符的左操作数。

1.下面有关重载函数的说法中正确的是(C)

A.重载函数必须具有不同的返回值类型;

  B.重载函数形参个数必须使用string类建立对象的不正确方式是(D)。

A.stringstr(“OK”);

B.stringstr=”OK”;

C.stringstr;

D.stringstr=’OK’;

3.面关于C++中类的继承与派生的说法错误的是(C)

C.私有派生时,基类的所有成员访问权限在派生类中保持不变

D.继承可以分为单一继承与多重继承

4.面向对象程序设计将数据与(A)放在一起,作为一个相互依存、不可分割的整体来处理。

A.对数据的操作B.信息C.数据隐藏D.数据抽象

5.一个类的析构函数A。

A.唯一的B.允许重载C.至多可有两个D.只能是缺省的

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

A.构造函数B.析构函数C.友元函数D.拷贝构造函数

7.在下面选项中,对类的拷贝构造函数的声明形式是(B)

A.A:

8.下面关于静态成员描述正确的是(B)

A.静态成员是对象的数据成员B.静态成员是对象的成员C.静态成员是对象的成员函数D.静态成员不是对象的成员

9.下面关于成员函数特征的描述中,错误的是(A)

A.成员函数不可以设置参数的默认值B.成员函数可以重载C.成员函数可以是内联函数D.成员函数可以是静态的

10.下面叙述正确的是(D)

A.基类的保护成员在派生类中仍然是保护的B.基类的公有成员在派生类中仍然是公有的

C.基类的私有成员在派生类中是私有的D.从基类派生时,可以有3种派生方法

1.classbase{

inta;

intb;

intf(inti,intj);

classderive:

base{

intc;

intbase:

b;

base:

f(inti,intj);

[1]

[2]

2.#include<

voidA(inti=0){m=i;

voidshow(){cout<

m;

void~A(){}

private:

intm;

};

voidmain()

Aa(5);

+=10;

();

[3]

[4]

[5]

3.#include<

iostream>

usingnamespacestd;

classbase{

staticintb;

base(intm,intn):

a(m),b(n){}

staticintgeta(){returna;

staticintgetb(){returnb;

voidshow(){cout<

geta()<

”,”<

getb()<

intb=45;

voidmain(){}

[6]

[7]

[8]

[1]intbase:

[2]base:

[1]base:

(或访问声明仅仅调整名字的访问,不可为它说明任何类型)

f;

(或访问声明不应说明函数参数)

[3]voidA(inti=0){m=i;

[4]void~A(){}

[5]+=10;

[3]构造函数去掉void(或构造函数不能指定返回值类型)

[4]析构函数去掉void(或析构函数不能指定返回值类型)

[5]对象不能访问私有成员

[6]base(intm,intn):

[7]staticintgeta(){returna;

[8]base:

[6]不能通过构造函数初始化静态数据成员(只要把b(n)去掉即可)

[7]静态成员函数中不能引用非静态成员数据成员(或去掉static)

[8]intbase:

b=45;

1.Template<

classT>

Tfun(Tx)

Ty;

y=T-2*x;

retruny;

2.classbase

f();

f(inta);

f(char*p);

base

voidf(ints);

base:

3.#include<

classA

voidsetA(int);

voidshowA();

inta;

classB

voidsetB(int);

voidshowB();

intb;

classC:

publicA,privateB

voidsetC(int,int,int);

voidshowC();

intc;

voidA:

setA(intx)

{a=x;

}

voidB:

setB(intx)

{b=x;

voidC:

setC(intx,inty,intz)

a=x;

b=y;

setA(x);

setB(y);

c=z;

[1]Template<

[2]y=T-2*x;

[1]改为template<

[2]T不能用作-的操作数

[3]base:

[3]派生类中具有与基类同名的函数,则基类中的此函数不能在派生类中进行访问声明

[4]a=x;

[5]b=y;

[6](6);

[7]();

[8]return0;

[4]派生类不能访问基类A类的私有成员

[5]派生类不能访问基类B类的私有成员

[6]不能访问B类的公有成员setB

[7]不能访问B类的公有成员showB

[8]去掉此语句,或主函数的返回值void去掉或改为int

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

1、C++程序中,对象的初始化和清理工作,分别由两个特殊的成员函数()和()来完成。

2、在c++中,分别用(变量)与(函数)来表现某种事物的所具有的属性和行为,并且将它们封装在一起,形成一种抽象数据类型——类。

3、当用一个对象初始化另一个新的同类对象,将调用(),其特殊之处在于:

形参是()。

4、模板是C++支持参数化的工具,我们通常用类模板和函数模板,这些只是面向对象的()性的一个方面。

5、如果在某个类定义中用关键字()声明了一个外部函数(也许是其他类的一个成员)后,这个外部函数就可以例外的访问该类的任何成员,这个外部函数称为类的()函数。

6、可以将类的成员声明为st

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

当前位置:首页 > 高等教育 > 工学

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

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