admin 管理员组

文章数量: 1087139


2024年4月16日发(作者:abstract和digest)

复习:C++填空题

1. C++的流库预定义了4个流,它们是cin、cout、clog

和___。答案:cerr [解析]分别是标准输入、输出、

标准错误流(缓冲)和标准错误流 (无缓冲标准错误)

2. 每个对象都是所属类的一个___。答案:实例

3. 在已经定义了整型指针p后,为了得到一个包括10

个整数的数组并由p所指向,应使用语句___。答案:

int *p=new int[10];

4. 函数模板中紧随template之后尖括号内的类型参数

都要冠以保留字___。答案:class [解析]类模板

template

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

类的___构造函数对其进行初始化。答案:无参[解析]

使用new创建对象数组,调用无参构造函数。

6. 表达式cout<

[解析]endl与字符常量‘\n’等价。

7. 在C++中,访问一个指针所指向的对象的成员所用

的指向运算符是___。答案:->[解析]指针使用成员

方法:“->”指向运算符和“.”成员访问运算符。

8. 假如一个类的名称为MyClass,使用这个类的一个

对象初始化该类的另一个对象时,可以调用___构造函

数来完成此功能。答案:复制或拷贝[解析]复制或

拷贝构造函数就是用对象初始化新的对象。

9. 对赋值运算符进行重载时,应声明为___函数。

答案:类成员 [解析]运算符重载的方法有友元或者

成员函数两种途径,但是赋值运算符只能使用成员函

数的方法来实现。

10. 如果要把A类成员函数f()且返回值为void声明

为类B的友元函数,则应在类B的定义中加入的语句

___。答案:friend void A::f();[解析]成员函数

作为另一个类的友元函数,格式为:friend 返回类型

类名::函数(形参)。

11. String 类的___方法返回查找到的字符串在主串的

位置。答案: find[解析]string类对象方法的find,

查不到字符串,则返回-1。

12. 控制格式输入输出的操作中,函数___是用来设置

填充字符。要求给出函数名和参数类型。答案:

setfill(char)

13. C++语言支持的两种多态性分别是编译时的多态

性和___的多态性。答案:运行时[解析]多态性包括

静态的(编译时)多态性和动态的(运行时)多态性。

14. 设函数sum是由函数模板实现的,并且sum(3,6)

和sum(4.6,8)都是正确的函数调用,则函数模板具有

___个类型参数。答案: 2

15. 执行下列代码string str("HelloC++");

cout<<(5,3); 程序的输出结果是___。

答案: C++[解析]substr取子字符串,参数1表示要

截取子串在字符串中的位置,第2个表示取多少个字符

16. 在面向对象的程序设计中,将一组对象的共同特

性抽象出来形成___。答案:类[解析]类是相似特征

的对象的抽象,对象是类的一个实例。

17. 定义类动态对象数组时,元素只能靠自动调用该类

的___来进行初始化。答案:无参构造函数[解析]使

用new 创建动态对象数组,不能有参数,所以只能调

用无参的构造函数,初始化对象。

18. 抽象类中至少要有一个___

函数。答案:纯虚

19. 一个抽象类的派生类可以实例化的必要条件是实

现了所有的___。答案:纯虚函数的定义[解析]抽象

类只因有纯虚函数,不能被实例化,所以派生类要实

例化必须对纯虚函数进行定义。

20. 静态成员函数、友元函数、构造函数和析构函数

中,不属于成员函数的是___。答案:友元函数[解析]

引入友元访问类是方便了,但破坏类访问的安全性。

21. 在用C++进行程序设计时,最好用___代替

malloc。答案: new[解析](1)给单个对象申请分

配内存int *ip; ip=new int;(2)给单个对象申请分配

内存的同时初始化该对象int *ip; ip=new int(68);(3)

同时给多个对象申请分配内存int *ip; ip=new int[5];

若申请失败,则返回NULL。因此,可以判断返回值是

否为0来获知系统中是否有足够的空间供用户使用。

22. 由const修饰的对象称为___。

答案:常对象[解析]使用const关键字说明的成员函

数称为常成员函数:<返回类型说明符><成员函数名

>(<参数表>)const; 常成员函数不更新对象的数

据成员,也不能调用该类中没有用const修饰的成员函

数。常对象只能调用它的常成员函数。

23. 基类的公有成员在派生类中的访问权限由___决

定。答案:访问控制方式或继承方式

24. 不同对象可以调用相同名称的函数,但执行完全

不同行为的现象称为___。答案:多态性

[解析]虚函数是实现多态的基础,运行过程中的多

态需要同时满足3个条件:(1)类之间应满足子类型关

系。(2)必须要有声明的虚函数。(3)调用虚函数操作

的是指向对象的指针或者对象引用;或者是由成员函

数调用虚函数(如果是在构造函数或析构函数中调用

虚函数,则采用静态联编)。

25. this指针始终指向调用成员函数的___。答案:对

象[解析]this指针是隐藏的指针。

26. 预处理命令以___符号开头。答案:#

27. 类模板用来表达具有___的模板类对象集。答案:

相同处理方法

第 4 页 共 4 页

28. 在#include命令中所包含的头文件,可以是系统定

义的头文件,也可以是___的头文件。答案:自定义

29. C++语言中如果调用函数时,需要改变实参或者返

回多个值,应该采取___方式。答案:传地址或引用

[解析]传地址即指针,在函数中通过指针修改它指

向的变量的值时,实参也就变化了。使用引用,直接

修改变量的别名即引用的值,该变量也就随着变化。

30. 如果要把类B的成员函数void fun()说明为类A

的友元函数,则应在类A中加入语句___。 答案:

friend void B::fun();

31. 在编译指令中,宏定义使用___指令。答案:

#define

32. 单目运算符作为类成员函数重载时,形参个数为

___个。答案:0[解析]双目运算符使用一个参数。

33. 为了在对象生存期结束时释放其指针成员所指向

的动态存储空间,通常为该类定义___。答案:析构函

数[解析]析构函数用来释放对象所占的空间。

34. 复制构造函数使用___作为形式参数。答案:对象

的引用

35. 假定用户没有给一个名为AB的类定义构造函数,

则系统自动给出的缺省构造函数定义为___。

答案:AB()[解析]构造函数的名称必须同类名一致,

为对象分配空间和初始化。构造函数不能指定返回类

型,函数体中不允许有返回值。构造函数可以重载,

一个类可以定义多个参数个数不同的构造函数。如果

一个类没有定义任何构造函数,那么C++就自动建立一

个默认的构造函数,没有形参,仅创建对象而不作任

何初始化。

36. 为了实现运行时的多态性,派生类需重新定义基

类中的___。答案:虚函数[解析]实现运行时多态性,

需要在基类中声明虚函数或纯虚函数。

37. 重载函数在参数类型或参数个数上不同,但___必

须相同。答案:函数名

38. 下面程序运行的结果是___。#include

void main(){ (*); (5);

cout<<"hello"<

答案:hello[解析]设置宽度是5但“hello”已经是

5个宽度,所以不需要填充。

39. 局部对象和全局对象中,在同一程序中___生存

期最长。答案:全局对象

40. 用___修饰函数称为虚函数。答案:

virtual

41. 下列程序段的输出结果是___。

(ios::showpos);cout<<509.3<

答案:+509.3[解析]输入、输出格式ios::showpos

用于输出数据的符号位。

42. 定义重载函数,应在___上有所不同。答案:参数

类型与参数的个数

43. 类是用户定义的类型,具有类类型的变量称作___。

答案:对象[解析]对象是类的一个实例。

44. 在函数体之前加___关键字可以防止覆盖函数改

变数据成员的值。答案:const

[解析]const修饰的对象称为常对象,修饰的引用称

为常引用它们的值不允许修改。

45. 在构造函数和析构函数中调用虚函数时采用___。

答案:静态联编[解析]在析构或构造函数调用虚函

数发生静态多态性。

46. 若函数的定义处于调用它的函数之前,则在程序

开始可以省去该函数的___语句。答案:声明

47. C++提供的预处理语句有3种,文件包含、条件

编译和___。答案:宏定义

48. 在C++中有两种参数传递方式:传值和___。

答案:传引用[解析](1)传值调用又分为数据传值

调用和地址传值调用。(2)引用调用时形参是实参变

量的引用名。引用是给一个已有变量起的别名。

49. 在保护派生中,基类权限为public的成员在派生

类中___。答案:保护类型[解析]基类是保护或公有

的,采用保护继承后,在派生类中都是保护类型。采

用公有继承后,基类是保护或公有的权限在派生类中

不变。采用私有继承后,基类是保护或公有的权限在

派生类中为私有。

50. 若要使用string类,需要引入的头文件是___。答

案:string.h

51. 在函数前面用___保留字修饰时,则表示该函数表

为内联函数。答案:inline[解析]内联函数用来提

高程序运行速度。在类内部定义的函数也是内联函数。

52. 重载的运算符保持其原有的___、优先级和结合性

不变。答案:操作数

53.

编译时的多态性通过___函数实现。答案:重载

[解析]编译多态性,实现的方法主要通过函数的重

载或运算符的重载。

54. 预处理语句有三种,分别是宏定义、文件包含和

___。答案:条件编译[解析]条件编译#if等。

55. 构造函数、析构函数和友元函数中,不是该类成员

的是___。答案:友元函数[解析]友元函数不是类成

员,但可以访问类中成员。

56. 控制格式输入输出的操作中,函数___是设置域宽

的。答案:setw(int) [解析]setw(int n):用来设

置n输出宽度。

57. 派生类的成员一般分为两部分,一部分是___,另

一部分是自己定义的新成员。答案:从基类继承的成

员[解析]派生类成员一个来自继承基类成员,一个

来自本身增加的成员。

58. C++中ostream的直接基类___。答案:ios[解

析]istream和ostream的直接基类是ios。

第 4 页 共 4 页

59. 执行下列代码 int i=230; cout <<"i="<

<

[解析]流类库中使用格式符,输出十六进制数据。

60. 使用new为int数组动态分配10个存储空间是___。

答案:new int[10];

61. 面向对象的四个基本特性是多态性、继承性、封装

性和___。答案:抽象性[解析]一组对象的共同特征

抽象出类的概念,类是对象的抽象,对象是类的实例。

封装即将数据和操作紧密结合,外部通过接口实现访

问数据,提供安全性。继承解决了类的扩展性。多态

性使得不同对象调用相同的函数名,但调用的是不同

的函数,实现不同的功能,解决了接口统一的问题。

62. 如果一个派生类只有一个唯一的基类,则这样的继

承关系称为___。答案:单继承

63. . 继承的方式有公有继承、私有继承和___。答案:

保护继承或protected

64. 表达式cout<

cout<

65. 通过C++语言中的___机制,可以从现存类中构建

其子类。答案:继承[解析]派生类是对基类的扩充。

66. ___是istream类的对象,用处理标准输入,即键盘

输入。答案:cin

67. 假设类X的对象x是类Y的成员对象,则“Y Obj”

语句执行时,先调用类___的构造函数。

答案:X[解

析]派生类中构造函数的执行顺序:先基类后派生类。

68. 派生的新类同时可以增加或重新定义数据和操作,

这称为类的___性。答案:层次性

69. C++中istream的直接基类___。答案:ios

70. 对已有的运算符赋予多重含义,使同一运算符能够

对不同类型的数据进行操作,称为___。答案:运算符

重载[解析]运算符重载,是特殊的函数重载,是对

系统已有的部分运算进行的再定义。

71. 派生类的主要用途是可以定义其基类中___。答案:

不具有的成员[解析]继承的特点,扩充基类,即在

派生类中增加基类不具有的成员。

72. 含有纯虚函数的类称为___。

答案:抽象类[解析]带有纯虚函数的类称为抽象类。

(1)抽象类只能作为基类使用,其纯虚函数的实现由派

生类给出;但派生类仍可不给出纯虚函数的定义,继

续作为抽象类存在。

(2)抽象类不能定义对象,一般将该类的构造函数说明

为保护的访问控制权限。

(3)可以声明一个抽象类的指针和引用。通过指针和引

用,可以指向并访问派生类对象,进而访问派生类的

成员,这种访问是具有多态特征的。

73. 拷贝初始化构造函数使用___来初始化创建中的对

象。答案:对象的引用

74. 一个const对象只能访问___成员函数。答案:常

75. 执行___操作将释放由指针所指向的动态分配的数

据空间。答案:delete

76. 有int a=1,b=2;则表达式a+++--b的值为___。答案:

2[解析]a++是后加,--b是前减。

77. A是一个类,已有语句“A* p; p=new A[

10];”。

要释放由p指向的动态空间,正确的语句应该是___。

答案:delete p;

78. 定义___函数时,应在参数个数或参数类型上有所

不同。答案:重载[解析]重载函数要求同名函数具

有相同的功能,而只能是函数类型、参数个数或参数

顺序不同。系统将根据同名函数的这些不同之处来选

择其对应的实现。

79. 执行下列代码

int a=32; double c=32; (ios::hex);

cout<<"hex:a="<

(ios::hex); 程序的输出结果为___。

答案: hex:a=20,c=32

[解析]用十六进制只能输出整型数据,而不能将其

它类型数据转换成十六进制的数据输出。所以double

类型不变仍然是32(double类型)。

80. 在定义成员函数时,函数体之前加上___防止覆盖

函数改变数据成员的值。答案:const

[解析]常成员函数格式如下:<返回类型说明符><成

员函数名>(<参数表>)const;

(1)const是函数类型的一个组成部分,因此在函数实

现部分也要带有const关键字。(2)常成员函数不更新

对象的数据成员,也不能调用该类中没有用const修饰

的成员函数。(3)常对象只能调用它的常成员函数,而

不能调用其他成员函数。

81. 如果一个引用不是用作函数参数或返回值,则在说

明该引用时必须对它进行___。答案:赋予初始值

82. 如果要把PI声明为值为3.14159类型为双精度实

数的符号常量,该声明语句是___。

答案:const double PI(3.14159);或者const double

PI=3.14159;

83. C++支持两种多态性:___时的多态性和运行时的

多态性。答案:编译

84. 将指向对象的引用作为函数的形参,形参是对象的

引用,实参是 ___。答案:对象名

85. 在用class定义一个类时,数据成员和成员函数的

默认访问权限是___。答案:private

86. ___多态性通过虚函数来实现的。答案:运行多态性

87. C++中有两种继承:单继承和___。答案:多继承

88. 如果通过同一个基类派生一系列的类,则将这些类

总称为___。答案:类族[解析]单继承方式派生的众

多的类。

第 4 页 共 4 页

89. 带有___的类称为抽象类。答案:纯虚函数

90. 静态成员定义的关键字为___。答案:static[解

析]静态数据成员在每个类对象中并不占有存储空间,

静态数据成员的值对每个对象都是一样的,但它的值

可以被任何一个对象更新,从而实现了同一类的不同

对象之间的数据共享。静态数据成员具有静态生存期,

必须对它进行初始化。

91. 在删除一个动态对象时,将自动调用该动态对象所

属类的___函数。答案:析构

[解析](1)如果一个对象被定义在一个函数体内,

当这个函数结束时,该对象的析构函数被自动调用。

(2)若使用new运算符动态创建一个对象,在使用

delete运算符释放时,delete将会自动调用析构函数。

92. 类的私有成员只能被它的成员函数和___访问。

答案:友元[解析]友元函数可以访问类的所有成员。

93. 在派生类中实现基类成员的初始化,需要由派生类

的构造函数调用___来完成。答案:初始化列表[解析]

定义派生类对象,先执行基类构造函数、后执行本类

的构造函数。

94. 假定用户为类AB定义了一个构造函数“A (int

i=0):x(i){}”,则定义该类的对象,与该语句等价的格式

为___。答案:(P76)A(int i=0){x=i;}

[解析]在构造函数中对数据成员的初始化可以采用

列表的形式,也可以在函数体内进行赋值操作。

95. 在单继承和多继承方式中,面向对象的程序设计应

尽量使用___继承。答案:单[解析]多继承是单继承

的扩展,且多继承易产生二义性等问题。

96. 在C++中,虚函数帮助实现了类的___。答案:多

态性[解析]动态多态性是通过基类指针或引用结合

虚函数来实现的。

97. 设类A有成员函数void f(void);若要定义一个指

向类成员函数的指针变量pf来指向f,该指针变量的

声明语句是:___。

答案: void (A::*pf)(void)=&A::f;

[解析]相当于void(A::*pf)(void);和pf=&A::f;。

98. 执行下列程序double a=3.1415926,b=3.14;

cout<

"<

___。答案:3.1416,3.14

99. 在下面的类定义中,私有成员有___。

class Location

{ int X,Y;

protected:

int zeroX,zerxY;

int SetZero(intzeroX, intzeroY);

private:

int length,height;

public:

void init(int initX,int initY);

int GetX();

int GetY(); };

答案:X,Y,length,height

100. 在C++中,访问指针所指向的对象的成员使用

___运算符。答案:->或.

101. C++支持的两种多态性分别是___多态性和运行多

态性。答案:静态或编译

102. C++中语句const char * const p=“hello”;所

定义的指针p和它所指的内容都不能被___。答案:修

改[解析]同时修饰地址和值,表示地址和值都不变。

103. 假定AB 为一个类,则语句AB(int i=0);为该类

___函数的原型说明。答案:带默认值的构造函数[解

析]即建立对象时没有参数时,则采用默认值0。

104. 在C++中,定义虚函数的关键字是___。答案:

virtual[解析]在普通函数前面用virtual修饰的函

数,就称为虚函数。

105. 采用私有派生方式,基类的public成员在私有派

生类中是___成员。答案:私有

106.

在面向对象程序设计中,将一组数据和这组数据

有关的操作集合组装在一起形成对象,这个过程叫

___。答案:封装

107. 对某个运算符的重载,实际上是用关键字___与

该运算符组成一个运算符函数。答案: operater[解

析]运算符的重载即对运算符赋予更多的含义。使用

关键字operator+函数组成的,只是该函数是特殊的函

数,函数名是运算符。

108. 所有模板都是以___关键字和一个形参表开头的。

答案:template[解析]类模板,函数模板都要使用

template这一关键字。

109. 在C++语言中,访问一个对象的成员所用的成员

运算符是___。答案:. [解析]如果是指针可以使用

“->”

110. 开发一个C++语言程序的步骤通常包括编辑、

___、连接、运行和调试。答案:编译

111. 以下程序输出的结果是___。

int a=5,b=4,c=3,d; d=a>b>c; cout<

答案:0[解析]a>b是真,为1,但不大于c=3,所以

为假即0

112. 在C++四个流对象中,___用于标准屏幕输出。

答案: cout[解析]cin是输入,cout是输出,cerr(无

缓冲标准错误)和clog(缓冲标准错误)是错误处理。

第 4 页 共 4 页


本文标签: 函数 答案 对象 成员 解析