武汉理工大学面向对象程序设计C++期末复习题_第1页
武汉理工大学面向对象程序设计C++期末复习题_第2页
武汉理工大学面向对象程序设计C++期末复习题_第3页
武汉理工大学面向对象程序设计C++期末复习题_第4页
武汉理工大学面向对象程序设计C++期末复习题_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计C++复习题

复制题目后,按住Ctrl+F键查找相应题目答案(超越高度)

一、判断(共计50分,每题2.5分)

1、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员.()

A.正确

B.错误

正确答案:【A】

2、函数定义中的形参的作用域是该函数的函数体。()

A.正确

B.错误

正确答案:【A】

3、单继承情况下,派生类中对基类成员的访问也会出现二义性.()

A.正确

B.错误

正确答案:【B】

4、函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。()

A.正确

B.错误

正确答案:【A】

5、在说明语句chara('A'),&b=a,*pa=&a;中,b的值与*pa的值相等。

A.正确

B.错误

正确答案:【A】

6、按照标识符的要求,下划线是不能组成正确标识符的。

A.正确

B.错误

正确答案:【B】

7、可以在类的构造函数中对静态数据成员进行初始化。()

A.正确

B.错误

正确答案:【B】

8、函数的定义不可以嵌套,类的定义可以嵌套。()

A.正确

B.错误

正确答案:【A】

9、类和对象之间的关系是抽象和具体的关系。()

A.正确

B.错误

正确答案:【A】

10、使用打开文件函数open()之前,需要定义一个流类对象,使用open()函数来操作该对象.

A.正确

B.错误

正确答案:【A】

11、C++语言中,既允许单继承,又允许多继承。()

A.正确

B.错误

正确答案:【A】

12、在基类中被说明为虚函数的类的成员函数必须在每个派生类中说明为虚函数,才能具有

多态的特征。()

A,正确

B.错误

正确答案:【B】

13、说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值

类型就可以了。()

A.正确

B.错误

正确答案:【A】

14、C++语言中模板分为函数模板和类模板两种。()

A.正确

B.错误

正确答案:【A】

15、析构函数不能是纯虚函数。()

A.正确

B.错误

正确答案:【B】

16、析构函数不能被继承。()

A.正确

B.错误

正确答案:【A】

17、友元函数说明在类体内,它是一种成员函数。

A.正确

B.错误

正确答案:【B】

18、作用域运算符(::)只能用来限定成员函数所属的类。()

A.正确

B.错误

正确答案:【B】

19、在派生类中,若基类的一个成员在派生类中也把相同名字定义为一个成员,则不可调整

它的访问。()

A,正确

B.错误

正确答案:【B】

20、解决多继承情况下出现的二义性的方法之一是使用成员名限定法。()

A.正确

B.错误

正确答案:【A】

二、单选(共计50分,每题2.5分)

21、进行文件操作时需要包含头文件()

A.iostream.h

B.stdio.h

C.fstream.h

D.stdlih

正确答案:【口

22、对使用关键字new所开辟的动态存储空间,释放时必须使用()

A.free

B.create

C.realse

D.delete

正确答案:【D】

23、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不

能作为依据的是()。

A.函数的返回值类型

B.参数的类型

C.函数名称

D.参数个数

正确答案:【A】

24、如果一个类至少有一个纯虚函数,那么就称该类为()。

A.抽象类

B.派生类

C.纯基类

D.以上都不对

正确答案:【A】

25、关于C++与C语言关系的描述中,()是错误的。

A.C语言是C++语言的一个子集

B.C语言与C++语言是兼容的

C.C++语言对C语言进行了一些改进

D.C++语言和C语言都是面向对象的

正确答案:【D】

26、在下面有关静态成员函数的描述中,正确的是()。

A.在静态成员函数中可以使用this指针

B.在建立对象前,就可以为静态数据成员赋值

C.静态成员函数在类外定义时,要用static前缀

D.静态成员函数只能在类外定义

正确答案:【B】

27、下面运算符中,不能被重载的运算符是()。

A.<=

B.-

C.?:

D.[]

正确答案:【C】

28、如果表达式++i*k中的“++”和都是重载的友元运算符,若采用运算符函数调用格

式,则表达式还可以表示为()。

A.operator*(i.operator++(),k)

B.operator*(operator++(i),k)

C.i.operator++().operator*(k)

D.k.operator*(operator++(i))

正确答案:【B】

29、将一组对象的共同特征抽象出来,从而形成的概念是()。

A.数组

B.类

C.实例

D.多态

正确答案:【B】

30、下列关于C++函数的叙述中,正确的是()。

A.每个函数至少要具有一个参数

B.函数在被调用之前必须先声明

C.每个函数都必须返回一个值

D.函数不能自己调用自己

正确答案:【B】

31、有关析构函数的说法,不正确的是()。

A.析构函数有且仅有一个

B.析构函数和构造函数一样可以有形参

C.析构函数的功能是在系统释放对象之前作一些内存清理工作

D.析构函数无任何函数类型

正确答案:【B】

32、将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是()

A.不合法的运算符

B.一元运算符

C.无操作数的运算符

D.二元运算符

正确答案:【B】

33、下列语句中错误的是()。

A.int*p=newint(10)

B.int*p=newint[10]

C.int*p=newint

D.int*p=newint[40](0)

正确答案:【D】

34、当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中()。

A.都是虚函数

B.只有被重新说明时才是虚函数

C.只有被重新说明为virtual时才是虚函数

D.都不是虚函数

正确答案:【A】

35、下列表示引用的方法中,()是正确的。己知:inta=1000;

A.int&x=a;

B.char&y;

C.int&z=1000;

D.float&t=&a;

正确答案:【A】

36、类的私有成员可在何处访问()

A.通过子类的对象访问

B.本类及子类的成员函数中

C.通过该类对象访问

D.本类的成员函数中

正确答案:【D】

37、下面说法中,正确的是。

A.一个类只能定义一个构造函数,但可以定义多个析构函数

B.一个类只能定义一个析构函数,但可以定义多个构造函数

C.构造函数与析构函数同名,只要名字前加了一个求反符号(~)

D,构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不

可以

正确答案:【B】

38、不能说明为虚函数的是()。

A.析构函数

B.构造函数

C.类的成员函数

D,以上都不对

正确答案:【B】

39、要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()

A.constchar*p="ABCD”

B.charconst*p="ABCD”

C.char*constp="ABCD”

D.constchar*constp="ABCD”

正确答案:【D】

40>C++是()。

A.面向对象的程序设计语言

B.面向过程的程序设计语言

C.既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言

D.非结构化的程序设计语言

正确答案:【G

一、判断(共计50分,每题2.5分)

1、空类就是没有名字的类。()

A.正确

B.错误

正确答案:【B】

2,可以在类的构造函数中对静态数据成员进行初始化。()

A.正确

B.错误

正确答案:【B】

3、在基类中被说明为虚函数的类的成员函数必须在每个派生类中说明为虚函数,才能具有

多态的特征。()

A.正确

B.错误

正确答案:【B】

4、析构函数不能是纯虚函数。()

A,正确

B.错误

正确答案:【B】

5、函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。()

A,正确

B.错误

正确答案:【A】

6、在派生类中,若基类的一个成员在派生类中也把相同名字定义为一个成员,则不可调整

它的访问。()

A.正确

B.错误

正确答案:【B】

7、C++语言中,既允许单继承,又允许多继承。()

A.正确

B.错误

正确答案:【A】

8、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员.()

A.正确

B.错误

正确答案:【A】

9、使用关键字class定义的类中默认的访问权限是私有(private)的。()

A.正确

B.错误

正确答案:【A】

10、函数定义中的形参的作用域是该函数的函数体。()

A.正确

B.错误

正确答案:【A】

11、友元函数说明在类体内,它是一种成员函数。

A.正确

B.错误

正确答案:【B】

12、作用域运算符(::)只能用来限定成员函数所属的类。()

A.正确

B.错误

正确答案:【B】

13、派生类是从基类派生出来,它不能再生成新的派生类。()

A.正确

B.错误

正确答案:【B】

14、使用打开文件函数open。之前,需要定义一个流类对象,使用open。函数来操作该对象.

A.正确

B.错误

正确答案:【A】

15、按照标识符的要求,下划线是不能组成正确标识符的。

A.正确

B.错误

正确答案:【B】

16、C++语言中模板分为函数模板和类模板两种。()

A.正确

B.错误

正确答案:【A】

17、使用模板可以减少重复劳动,提高代码重用率.()

A.正确

B.错误

正确答案:【A】

18、函数的定义不可以嵌套,类的定义可以嵌套。()

A.正确

B.错误

正确答案:【A】

19、析构函数不能被继承。()

A.正确

B.错误

正确答案:【A】

20、解决多继承情况下出现的二义性的方法之一是使用成员名限定法。()

A.正确

B.错误

正确答案:【A】

二、单选(共计50分,每题2.5分)

21、在main函数中可以用p.a的形式访问派生类对象p的基类成员a,其中a是()。

A.私有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.公有继承的公有成员

正确答案:【D】

22、已知inta,*pa=&a;,输出指针pa十进制的地址值的方法是()

A.cout«pa

B.cout«*pa

C.cout«&pa

D.cout«long(&pa)

正确答案:【D】

23、下列语句中错误的是()。

A.int*p=newint(10)

B.int*p=newint[10]

C.int*p=newint

D.int*p=newint[40](0)

正确答案:【D】

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

A.构造函数的函数名与类名相同;

B.构造函数可以重载;

C.构造函数可以设置缺省参数;

D.构造函数必须指定类型说明。

正确答案:【D】

25、要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()

A.constchar*p="ABCD"

B.charconst*p="ABCD"

C.char*constp="ABCD"

D.constchar*constp="ABCD"

正确答案:【D】

26、有关析构函数的说法,不正确的是()。

A.析构函数有且仅有一个

B.析构函数和构造函数一样可以有形参

C.析构函数的功能是在系统释放对象之前作一些内存清理工作

D.析构函数无任何函数类型

正确答案:【B】

27、下列语句中,将函数intsum(intx,inty)正确重载的是().

A.floatsum(intxjnty);

B.intsum(intajntb);

C.floatsum(floatx,floaty);

D.doublesum(intyjntx);

正确答案:【c】

28、当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中()。

A.都是虚函数

B.只有被重新说明时才是虚函数

C.只有被重新说明为virtual时才是虚函数

D,都不是虚函数

正确答案:【A】

29、关于C++与C语言关系的描述中,()是错误的。

A.C语言是C++语言的一个子集

B.C语言与C++语言是兼容的

C.C++语言对C语言进行了一些改进

D.C++语言和C语言都是面向对象的

正确答案:【D】

30、调用一成员函数时,使用动态联编的情况是()

A.通过对象调用一虚函数

B.通过指针或引用调用一虚函数

C.通过对象调用一静态函数

D.通过指针或引用调用一静态函数

正确答案:【B】

31、面向对象程序设计思想的主要特征中不包括()。

A.封装性

B.多态性

C.继承性

D.功能分解,逐步求精

正确答案:【D】

32、在C++中,用于实现运行时多态性的是()。

A.内联函数

B.重载函数

C.模板函数

D.虚函数

正确答案:【D】

33、下列表示引用的方法中,()是正确的。已知:inta=1000;

A.int&x=a;

B.char&y;

C.int&z=1000;

D.float&t=&a;

正确答案:【A】

34、不能说明为虚函数的是()。

A.析构函数

B.构造函数

C.类的成员函数

D,以上都不对

正确答案:【B】

35、将一组对象的共同特征抽象出来,从而形成的概念是()o

A.数组

B.类

C.实例

D.多态

正确答案:【B】

36、下列不是构造函数的特征的是()。

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

B.构造函数可以重载

C.构造函数必须指定类型说明

D,构造函数可以设置缺省参数

正确答案:【C】

37、下面运算符中,不能被重载的运算符是()。

A.<=

B.-

C.?:

D.[]

正确答案:【口

38、已知X类,则当程序执行到语句:Xarray⑶;时,调用了()次构造函数。

A.0

B.1

C.2

D.3

正确答案:【D】

39、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为()。

A.MyClass(MyClassx)

B.MyClass&(MyClassx)

C.MyClass(MyClass&x)

D.MyClass(MyClass*x)

正确答案:【c】

40、进行cout屏幕输出和cin键盘输入时,C++头文件中必须包括()文件。

A.stdio.h

B.iostream.h

C.fstream.h

D.stdlih

正确答案:【B】

一、判断(共计50分,每题2.5分)

1、按照标识符的要求,下划线是不能组成正确标识符的。

A.正确

B.错误

正确答案:【B】

2、空类就是没有名字的类。()

A.正确

B.错误

正确答案:【B】

3、在说明语句chara('A'),&b=a,*pa=&a;中,b的值与*pa的值相等。

A.正确

B.错误

正确答案:【A】

4、函数定义中的形参的作用域是该函数的函数体。()

A.正确

B.错误

正确答案:【A】

5、说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值

类型就可以了。()

A,正确

B.错误

正确答案:【A】

6、析构函数不能被继承。()

A,正确

B.错误

正确答案:【A】

7、解决多继承情况下出现的二义性的方法之一是使用成员名限定法。()

A.正确

B.错误

正确答案:【A】

8、函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。()

A,正确

B.错误

正确答案:【A】

9、友元函数说明在类体内,它是一种成员函数。

A,正确

B.错误

正确答案:【B】

10、使用关键字class定义的类中默认的访问权限是私有(private)的。()

A,正确

B.错误

正确答案:【A】

11、派生类是从基类派生出来,它不能再生成新的派生类。()

A.正确

B.错误

正确答案:【B】

12、使用模板可以减少重复劳动,提高代码重用率.()

A,正确

B.错误

正确答案:【A】

13、作用域运算符(::)只能用来限定成员函数所属的类。()

A,正确

B.错误

正确答案:【B】

14、使用打开文件函数。pen()之前,需要定义一个流类对象,使用open。函数来操作该对象.

A,正确

B.错误

正确答案:【A】

15、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员.()

A.正确

B.错误

正确答案:【A】

16、析构函数不能是纯虚函数。()

A,正确

B.错误

正确答案:【B】

17、函数的定义不可以嵌套,类的定义可以嵌套。()

A,正确

B.错误

正确答案:【A】

18、在派生类中,若基类的一个成员在派生类中也把相同名字定义为一个成员,则不可调整

它的访问。()

A.正确

B.错误

正确答案:【B】

19、C++语言中,既允许单继承,又允许多继承。()

A.正确

B.错误

正确答案:【A】

20、可以在类的构造函数中对静态数据成员进行初始化。()

A.正确

B.错误

正确答案:【B】

二、单选(共计50分,每题2.5分)

21、要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()

A.constchar*p="ABCD"

B.charconst*p="ABCD"

C.char*constp="ABCD"

D.constchar*constp="ABCD"

正确答案:【D】

22、在main函数中可以用p.a的形式访问派生类对象p的基类成员a,其中a是()。

A.私有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.公有继承的公有成员

正确答案:【D】

23、C++是()。

A.面向对象的程序设计语言

B.面向过程的程序设计语言

C.既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言

D.非结构化的程序设计语言

正确答案:【C】

24、下列关于C++函数的叙述中,正确的是()o

A.每个函数至少要具有一个参数

B.函数在被调用之前必须先声明

C.每个函数都必须返回一个值

D.函数不能自己调用自己

正确答案:【B】

25、下列语句中错误的是()。

A.int*p=newint(10)

B.int*p=newint[10]

C.int*p=newint

D.int*p=newint[40](0)

正确答案:【D】

26、已知X类,则当程序执行到语句:Xarray[3];时,调用了()次构造函数。

A.0

B.1

C.2

D.3

正确答案:【D】

27、不能说明为虚函数的是()。

A.析构函数

B.构造函数

C.类的成员函数

D.以上都不对

正确答案:【B】

28、进行cout屏幕输出和cin键盘输入时,C++头文件中必须包括()文件。

A.stdio.h

B.iostream.h

C.fstream.h

D.stdlih

正确答案:【B】

29、静态成员函数没有()。

A.返回值

B.this指针

C.指针参数

D.返回类型

正确答案:【B】

30、对使用关键字new所开辟的动态存储空间,释放时必须使用()

A.free

B.create

C.realse

D.delete

正确答案:【D】

31、类的私有成员可在何处访问。

A.通过子类的对象访问

B.本类及子类的成员函数中

C.通过该类对象访问

D.本类的成员函数中

正确答案:【D】

32、将一组对象的共同特征抽象出来,从而形成的概念是()。

A.数组

B.类

C.实例

D,多态

正确答案:【B】

33、下列表示引用的方法中,()是正确的。已知:inta=1000;

A.int&x=a;

B.char&y;

C.int&z=1000;

D.float&t=&a;

正确答案:【A】

34、下列不是构造函数的特征的是

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

B.构造函数可以重载

C.构造函数必须指定类型说明

D.构造函数可以设置缺省参数

正确答案:【C】

35、下面运算符中,不能被重载的运算符是()。

A.<=

B.-

C.?:

D.[]

正确答案:【口

36、已知:intm=10;下列表示引用的方法中,正确的是()o

A.int&x=m

B.int&y=10

C.int&z

D.float&t=&m;

正确答案:【A】

37、下面说法中,正确的是()

A.一个类只能定义一个构造函数,但可以定义多个析构函数

B.一个类只能定义一个析构函数,但可以定义多个构造函数

C.构造函数与析构函数同名,只要名字前加了一个求反符号(~)

D,构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不

可以

正确答案:【B】

38、如果一个类至少有一个纯虚函数,那么就称该类为()。

A.抽象类

B.派生类

C.纯基类

D.以上都不对

正确答案:【A】

39、将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是()

A.不合法的运算符

B.一元运算符

C.无操作数的运算符

D.二元运算符

正确答案:【B】

40、下列语句中,将函数intsum(intx,inty)正确重载的是()«

A.floatsum(intxjnty);

B.intsum(intajntb);

C.floatsum(floatx,floaty);

D.doublesum(intyjntx);

正确答案:【c】

一、判断(共计50分,每题2.5分)

1、使用关键字class定义的类中默认的访问权限是私有(private)的。()

A.正确

B.错误

正确答案:【A】

2、在派生类中,若基类的一个成员在派生类中也把相同名字定义为一个成员,则不可调整

它的访问。()

A,正确

B.错误

正确答案:【B】

3、析构函数不能是纯虚函数。()

A,正确

B.错误

正确答案:【B】

4、析构函数不能被继承。()

A,正确

B.错误

正确答案:【A】

5、使用模板可以减少重复劳动,提高代码重用率.()

A.正确

B.错误

正确答案:【A】

6、空类就是没有名字的类。()

A,正确

B.错误

正确答案:【B】

7、作用域运算符(::)只能用来限定成员函数所属的类。()

A,正确

B.错误

正确答案:【B】

8、类和对象之间的关系是抽象和具体的关系。()

A,正确

B.错误

正确答案:【A】

9、C++语言中,既允许单继承,又允许多继承。()

A.正确

B.错误

正确答案:【A】

10、在说明语句chara('A'),&b=a,*pa=&a;中,b的值与*pa的值相等。

A,正确

B.错误

正确答案:【A】

11、使用打开文件函数。pen()之前,需要定义一个流类对象,使用open()函数来操作该对象.

A,正确

B.错误

正确答案:【A】

12、派生类是从基类派生出来,它不能再生成新的派生类。()

A.正确

B.错误

正确答案:【B】

13、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员.()

A,正确

B.错误

正确答案:【A】

14、函数的定义不可以嵌套,类的定义可以嵌套。()

A,正确

B.错误

正确答案:【A】

15、函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。()

A,正确

B.错误

正确答案:【A】

16、按照标识符的要求,下划线是不能组成正确标识符的。

A.正确

B.错误

正确答案:【B】

17、说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值

类型就可以了。()

A.正确

B.错误

正确答案:【A】

18、友元函数说明在类体内,它是一种成员函数。

A.正确

B.错误

正确答案:【B】

19、单继承情况下,派生类中对基类成员的访问也会出现二义性.()

A.正确

B.错误

正确答案:【B】

20、在基类中被说明为虚函数的类的成员函数必须在每个派生类中说明为虚函数,才能具有

多态的特征。()

A,正确

B.错误

正确答案:【B】

二、单选(共计50分,每题2.5分)

21、下列语句中,将函数intsum(intx,inty)正确重载的是()。

A.floatsum(intxjnty);

B.intsum(inta,intb);

C.floatsum(floatx,floaty);

D.doublesum(intyjntx);

正确答案:【C】

22、进行cout屏幕输出和cin键盘输入时,C++头文件中必须包括()文件。

A.stdio.h

B.iostream.h

C.fstream.h

D.stdlih

正确答案:【B】

23、以下有关继承的叙述正确的是()。

A.构造函数和析构函数都能被继承

B.派生类是基类的组合

C.派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员

D.基类的公有成员一定能被派生类的对象访问

正确答案:【C】

24、当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中()。

A.都是虚函数

B.只有被重新说明时才是虚函数

C.只有被重新说明为virtual时才是虚函数

D.都不是虚函数

正确答案:【A】

25、有关析构函数的说法,不正确的是()。

A.析构函数有且仅有一个

B.析构函数和构造函数一样可以有形参

C.析构函数的功能是在系统释放对象之前作一些内存清理工作

D.析构函数无任何函数类型

正确答案:【B】

26、下面说法中,正确的是()

A.一个类只能定义一个构造函数,但可以定义多个析构函数

B.一个类只能定义一个析构函数,但可以定义多个构造函数

C.构造函数与析构函数同名,只要名字前加了一个求反符号(~)

D.构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不

可以

正确答案:【B】

27、如果一个类至少有一个纯虚函数,那么就称该类为()。

A.抽象类

B.派生类

C.纯基类

D.以上都不对

正确答案:【A】

28、对使用关键字new所开辟的动态存储空间,释放时必须使用()

A.free

B.create

C.realse

D.delete

正确答案:【D】

29、要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()

A.constchar*p="ABCD”

B.charconst*p="ABCD”

C.char*constp="ABCD”

D.constchar*constp="ABCD”

正确答案:【D】

30、下列表示引用的方法中,()是正确的。已知:inta=1000;

A.int&x=a;

B.char&y;

C.int&z=1000;

D.float&t=&a;

正确答案:【A】

31、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为()。

A.MyClass(MyClassx)

B.MyClass&(MyClassx)

C.MyClass(MyClass&x)

D.MyClass(MyClass*x)

正确答案:【c】

32、面向对象程序设计思想的主要特征中不包括()。

A,封装性

B.多态性

C.继承性

D.功能分解,逐步求精

正确答案:【D】

33、静态成员函数没有()。

A.返回值

B.this指针

C.指针参数

D.返回类型

正确答案:【B】

34、不能说明为虚函数的是()。

A.析构函数

B.构造函数

C.类的成员函数

D,以上都不对

正确答案:【B】

35、已知:intm=10;下列表示引用的方法中,正确的是()«

A.int&x=m

B.int&y=10

C.int&z

D.float&t=&m;

正确答案:【A】

36、在C++中,用于实现运行时多态性的是()。

A.内联函数

B.重载函数

C.模板函数

D.虚函数

正确答案:【D】

37、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不

能作为依据的是()。

A.函数的返回值类型

B.参数的类型

C.函数名称

D.参数个数

正确答案:【A】

38、下列不是构造函数的特征的是()。

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

B.构造函数可以重载

C.构造函数必须指定类型说明

D.构造函数可以设置缺省参数

正确答案:【C】

39、C++是().

A.面向对象的程序设计语言

B.面向过程的程序设计语言

C.既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言

D.非结构化的程序设计语言

正确答案:【C】

40、下列语句中错误的是()。

A.int*p=newint(10)

B.int*p=newint[10]

C.int*p=newint

D.int*p=newint[40](0)

正确答案:【D】

一、判断(共计50分,每题2.5分)

1、函数定义中的形参的作用域是该函数的函数体。()

A,正确

B.错误

正确答案:【A】

2、析构函数不能被继承。()

A,正确

B.错误

正确答案:【A】

3、C++语言中,既允许单继承,又允许多继承。()

A.正确

B.错误

正确答案:【A】

4、按照标识符的要求,下划线是不能组成正确标识符的。

A,正确

B.错误

正确答案:【B】

5、友元函数说明在类体内,它是一种成员函数。

A,正确

B.错误

正确答案:【B】

6、说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值

类型就可以了。()

A.正确

B.错误

正确答案:【A】

7、作用域运算符(::)只能用来限定成员函数所属的类。()

A.正确

B.错误

正确答案:【B】

8、在基类中被说明为虚函数的类的成员函数必须在每个派生类中说明为虚函数,才能具有

多态的特征。()

A.正确

B.错误

正确答案:【B】

9、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员.()

A,正确

B.错误

正确答案:【A】

10、类和对象之间的关系是抽象和具体的关系。()

A,正确

B.错误

正确答案:【A】

11、C++语言中模板分为函数模板和类模板两种。()

A,正确

B.错误

正确答案:【A】

12、在派生类中,若基类的一个成员在派生类中也把相同名字定义为一个成员,则不可调整

它的访问。()

A.正确

B.错误

正确答案:【B】

13、析构函数不能是纯虚函数。()

A.正确

B.错误

正确答案:【B】

14、单继承情况下,派生类中对基类成员的访问也会出现二义性.()

A.正确

B.错误

正确答案:【B】

15、派生类是从基类派生出来,它不能再生成新的派生类。()

A.正确

B.错误

正确答案:【B】

16、使用打开文件函数open()之前,需要定义一个流类对象,使用open。函数来操作该对象.

A.正确

B.错误

正确答案:【A】

17、使用模板可以减少重复劳动,提高代码重用率.()

A.正确

B.错误

正确答案:【A】

18、在说明语句chara('A'),&b=a,*pa=&a;中,b的值与*pa的值相等。

A.正确

B.错误

正确答案:【A】

19、解决多继承情况下出现的二义性的方法之一是使用成员名限定法。()

A.正确

B.错误

正确答案:【A】

20、函数的定义不可以嵌套,类的定义可以嵌套。()

A.正确

B.错误

正确答案:【A】

二、单选(共计50分,每题2.5分)

21、下列表示引用的方法中,()是正确的。已知:inta=1000;

A.int&x=a;

B.char&y;

C.int&z=1000;

D.float&t=&a;

正确答案:【A】

22、以下有关继承的叙述正确的是()。

A.构造函数和析构函数都能被继承

B.派生类是基类的组合

C.派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员

D.基类的公有成员一定能被派生类的对象访问

正确答案:【C】

23、进行cout屏幕输出和cin键盘输入时,C++头文件中必须包括()文件。

A.stdio.h

B.iostream.h

C.fstream.h

D.stdlih

正确答案:【B】

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

A.构造函数的函数名与类名相同;

B.构造函数可以重载;

C.构造函数可以设置缺省参数;

D.构造函数必须指定类型说明。

正确答案:【D】

25、对使用关键字new所开辟的动态存储空间,释放时必须使用()

A.free

B.create

C.realse

D.delete

正确答案:【D】

26、如果一个类至少有一个纯虚函数,那么就称该类为()。

A.抽象类

B.派生类

C.纯基类

D.以上都不对

正确答案:【A】

27、可以在类外用p.a的形式访问派生类对象p的基类成员a,其中a是()。

A.私有继承的公用成员

B.公用继承的私有成员

C.公用继承的保护成员

D.公用继承的公用成员

正确答案:【D】

28、关于C++与C语言关系的描述中,()是错误的。

A.C语言是C++语言的一个子集

B.C语言与C++语言是兼容的

C.C++语言对C语言进行了一些改进

D.C++语言和C语言都是面向对象的

正确答案:【D】

29、当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中()。

A.都是虚函数

B.只有被重新说明时才是虚函数

C.只有被重新说明为virtual时才是虚函数

D,都不是虚函数

正确答案:【A】

30、下面运算符中,不能被重载的运算符是()。

A.<=

B.一

C.?:

D.[]

正确答案:【口

31、假设已经定义好了一个类student,现在要定义类derived,它是从student私有派生的,

定义类derived的正确写法是()。

A.clasederived::studentprivate{***}

B.clasederived::studentpublic{---}

C.clasederived:privatestudent{…}

D.clasederived::publicstudent{---}

正确答案:【C】

32、进行文件操作时需要包含头文件()

A.iostream.h

B.stdio.h

C.fstream.h

D.stdlih

正确答案:【c】

33、己知:intm=10;下列表示引用的方法中,正确的是()。

A.int&x=m

B.int&y=10

C.int&z

D.float&t=&m;

正确答案:【A】

34、下面说法中,正确的是()

A.一个类只能定义一个构造函数,但可以定义多个析构函数

B.一个类只能定义一个析构函数,但可以定义多个构造函数

C.构造函数与析构函数同名,只要名字前加了一个求反符号(~)

D.构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不

可以

正确答案:【B】

35、面向对象程序设计思想的主要特征中不包括()。

A.封装性

B.多态性

C.继承性

D.功能分解,逐步求精

正确答案:【D】

36、如果表达式++i*k中的“++”和“”都是重载的友元运算符,若采用运算符函数调用格

式,则表达式还可以表示为()。

A.operator*。.operator++(),k)

B.operator*(operator++(i),k)

C.i.operator++().operator*(k)

D.k.operator*(operator++(i))

正确答案:【B】

37、在main函数中可以用p.a的形式访问派生类对象p的基类成员a,其中a是()。

A.私有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.公有继承的公有成员

正确答案:【D】

38、将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是()

A.不合法的运算符

B.一元运算符

C.无操作数的运算符

D.二元运算符

正确答案:【B】

39、下列关于C++函数的叙述中,正确的是()。

A.每个函数至少要具有一个参数

B.函数在被调用之前必须先声明

C.每个函数都必须返回一个值

D.函数不能自己调用自己

正确答案:【B】

4。、有关析构函数的说法,不正确的是()。

A.析构函数有且仅有一个

B.析构函数和构造函数一样可以有形参

C.析构函数的功能是在系统释放对象之前作一些内存清理工作

D.析构函数无任何函数类型

正确答案:【B】

一、案例分析(每题参考分值5分)

L试写出Time类的类声明及成员函数的实现。要求在Time类中包含3个数据分量即时(hour1

分(minute)和秒(second)。在类的成员函数中应包括存(用set开头)、取(用get开头)各

个数据分量和完整时间的操作;按上下午各12小时或按24小时打印时间的函数;有默认值的构造

函数等。默认值以0时0分0秒为准。

正确答案:

classTimer

inth,m,s;

public:

Timer()

(

h=O;m=O;s=O;

)

voidSet(inti,intj,intk)

(

h=i;m=j;s=k;

)

intGetH()const{returnh;}

intGetMconst{returnm;}

intGetsconst{returns;}

);

2、定义一个复数类Complex,重载运算符,使之能用于复数的加、减、乘、

除。运算符重载作为Complex的类的成员函数,编程序,求两个复数的和,差,积,商。

正确答案:

#include<iostream>

usingnamespacestd;

classComplex

{public:

Complex(){real=0;imag=0;}

Complex(doubler,doublei){real=r;imag=i;}

Complexoperator+(Complex&c2);

Complexoperator-(Complex&c2);

Complexoperator*(Complex&c2);

Complexoperator/(Complex&c2);

voiddisplayO;

private:

doublereal;

doubleimag;

);

ComplexComplex::operator+(Complex&c2)

{Complexc;

c.real=real+c2.real;

c.imag=imag+c2.imag;

returnc;}

ComplexComplex::operator-(Complex&c2)

{Complexc;

c.real=real-c2.real;

c.imag=imag-c2.imag;

returnc;}

ComplexComplex::operator*(Complex&c2)

{Complexc;

c.real=real*c2.real-imag*c2.imag;

c.imag=imag*c2.real+real*c2.imag;

returnc;}

ComplexComplex::operator/(Complex&c2)

{Complexc;

c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.i

mag);

c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.i

mag);

returnc;}

voidComplex::display()

{cout<<"("<<real<<","<<imag<<"i)n<<endl;}

intmain()

{Complexcl(3,4),c2(5,-10),c3;

c3=cl+c2;

cout<<"cl+c2=";

c3.display();

c3=cl-c2;

cout<<"cl-c2=";

c3.display();

c3=cl*c2;

cout<<"cl*c2=";

c3.display();

c3=cl/c2;

cout<<ncl/c2=n;

c3.display();

return0;

)

3、定义几何图形类Shape作为基类,并在Shape的基础上派生出圆形Circle类和矩形Rectangle

类,两个派生类都有CalculateArea()函数计算几何图形面积。

正确答案:

#include<iostream>

usingnamespacestd;

#definePI3.1415926535

classShape

public:

protected:

doublemianji;

private:

};

classCircle:publicShape

(

public:

Circle();

voidCalculateArea();

voiddisplayO;

protected:

doubleR;

private:

);

Circle::Circle()

(

cout<<"请输入圆的半径:"<<endl;

cin>>R;

)

voidCircle::CalculateArea()

(

mianji=PI*2*R*R;

)

voidCircle::display()

(

cout<<"这个圆的面积为:"<<endl;

cout<<mianji<<endl;

)

classRectangle:publicShape

(

public:

Rectangle();

voidCalculateArea();

voiddisplayO;

protected:

doublex;

doubley;

private:

);

Rectangle::Rectangle()

(

cout<<"请输入矩形的长和宽:"<<endl;

cin>>x>>y;

)

voidRectangle::CalculateArea()

(

mianji=x*y;

}

voidRectangle::display()

(

cout<<"这个矩形的面积为:"<<mianji<<endl;

)

voidmain()

Circlex;

x.CalculateArea();

x.displayO;

Rectangley;

y.CalculateArea();

y.displayO;

)

4、设有如下的类声明:

classTest

{

public:

voidSetDatal(intval){datal=val;}

voidSetData2(doubleval){data2=val:}

intGetDatal(){returndatal;}

doubleGetData2(){returndata2;}

private:

intdatal;

doubledata2;

)

试将此类声明改为类模板声明,使得数据成员datal和data2可以是用可类型。

正确答案:

#include<iostream>

usingnamespacestd;

#include<string>

template<classTl,classT2>

classTest

(

public:

voidSetDatal(Tlval){datal=val;}

voidSetData2(T2val){data2=val;}

T1GetDatal(){returndatal;}

T2GetData2(){returndata2;}

private:

T1datal;

T2data2;

);

intmain()

(

inta;

doubleb;

Test<int,double>t;

t.SetDatal(2);

a=t.GetDatal();

cout<<a<<endl;

t.SetData2(2.2);

b=t.GetData2();

cout<<b<<endl;

stringc;

Test<string,double>t2;

t2.SetDatal("china");

c=t2.GetDatal();

cout<<c<<endl;

t2.SetData2(2.2);

b=t2.GetData2();

cout<<b<<endl;

)

二、问答(每题参考分值5分)

5、#indude<iostream>

usingnamespacestd;

classTest{

private:

intnum;

public:

Test()

(

cout<<"Defaultconstructorisactive!"<<endl;

num=0;

)

intGetNumQ{returnnum;}

-Test();

);

Test::-Test()

(

cout<<"Destructorisactive"<<endl;

)

intmain()

Testx[3];

cout<<"Exitingmain:*'<<endl;

system("pause");

return0;

)

正确答案:

Defaultconstructorisactive!

Defaultconstructorisactive!

Defaultconstructorisactive!

Exitingmain:

Destructorisactive

Destructorisactive

Destructorisactive

6、#include<iostream>

#include<fstream>

usingnamespacestd;

intmain()

(

ifstreamin("myfile.txt");

if(!in)

cout<<"Can'topenmyfile."<<endl;

return1;

)

charch;

in.seekg(2rios::beg);

if(in.get(ch))

cout<<ch<<endl;

in.seekg(ll,ios::cur);

if(in.get(ch))

cout<<ch<<endl;

in.seekg(-14,ios::end);

if(in.get(ch))

cout<<ch<<endl;

in.closeO;

return0;

)

注:myfile.txt的文件内容为:voidexchange(int&a,int&b,int&c)

正确答案:

n

7、#include<iostream>

usingnamespacestd;

classMyClass

(

public:

MyClass(intx=0)

(

i=x;

cout<<"Thisisaconstructor!i="<<i<<endl;

)

~MyClass()

(

cout<<"Thisisadestructor!i=n<<i<<endl;

)

voidSetValue(intval)

i=val;

cout<<"i="<<i<<endl;

)

intGetVal()

(

returni;

)

private:

inti;

);

intmain()

(

MyClass*p[3];

inti;

for(i=0;i<3;i++)

p[i]=newMyClass(i);

p[i]->SetValue(p[i]->GetVal()*2);

)

for(i=0;i<3;i++)

deletep[i];

return0;

)

正确答案:

Thisisaconstruct

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论