C++自考填空题

阅读: 评论:0

2024年2月7日发(作者:)

C++自考填空题

21.在C++语言的面向对象设计框架中,_______是程序的基本组成单元。

22.执行代码double pi=; cout < < setprecision (3) < < pi;程序的输出结果是_______。

++语言提供的的基本控制结构可以分为3种类型:顺序结构、_______和循环结构。

24.要使用STL库提供的对数组进行降幂排序算法,在源程序中需要包含的头文件是______。

25.在C++标准库中,用_______类来表示复数。

26.将对象作为函数参数,是将实参对象的_______传递给形参对象,这种传递是单向的。

++函数的返回类型可以是除数组与_______以外的任何类型。

28.能提供封装的C++关键字是_______。

29.在C++的类声明中,用public关键字声明的类成员的访问权限是_______。

30.开发一个C++语言程序的步骤通常包括编辑、_______、连接、运行和调试。

++类中的_______函数在对象的生存期结束时被自动调用。

32.友元函数可以存取类的_______、公有成员和保护成员。

33.若类的成员函数用关键字static进行修饰,这样的成员函数称为_______。

34.在C++中,创建派生类对象时,总是先从_______的初始化开始的。

35.类的继承是指派生类继承基类的数据成员和_______。

36.在C++中,利用向量类模板定义一个具有20个double的向量,其元素均被置为,实现此操作的语句是_______。

类中用于返回向量中的最后一个对象的方法是_________。

38.虚函数类似于重载函数,但与重载函数的实现策略不同,对虚函数声明时应使用_______关键字。

39.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的_______特性。

40.执行下列代码

cout < < showpoint < < ;程序的输出结果是_______。

21.若使用标准输出流把整型变量a的值输出到屏幕上,实现此操作的C++语句是______。

++将数据从一个对象流向另一个对象的流动抽象为“流”,从流中获取数据的操作称为______。

23.执行下列代码

int b=100;

cout<<"Hex:"<

程序的输出结果是______。

24.静态联编所支持的多态性称为______的多态性。

++程序必须有且只有一个主函数,其函数名为______。

26.写出声明一个复数对象的语句,并使该对象被初始化为+,此声明语句是______。

27.若有函数定义为:

int add(int ml=0,int m2=2,int m3=4)

{return ml+m2+m3;}

在主函数中有int s=add(1)+add(0,1)+add(0,1,2);

则执行此语句后s的值为______。

++中使用______关键字说明函数为内联函数。

29.在源程序中有宏定义:#define PI ,则若不想使该宏定义影响到程序的其它地方,可以使用______删除该宏定义。

30.类和其它数据类型不同的是,组成这种类型的不仅可以有数据,还可以有对数据进行操作的_______。

31.有下列代码int a=0;double b=0;cin>>a>>b;当用键盘输入时,b=______。

32.对于类Point而言,其析构函数的定义原型为______。

33.对象成员构造函数的调用顺序取决于这些对象在类中说明的顺序,与它们在成员初始化列表中给出的顺序______。

34.类的简单成员函数是指声明中不含______、volatile、static关键字的函数。

35.与操作对象的数据类型相互独立的算法称为______。

36.从一个或多个以前定义的类产生新类的过程称为______。

37.在vector类中向向量尾部插入一个对象的方法是______。

++中用于动态创建对象,并返回该对象的指针的关键字是______。

++的流类库预定义的与标准输出设备相联接的流是______。

40.执行下列代码

cout<

程序输出结果是______。

21.设要把一个文件输出流对象myFile与文件“f:\相关联,所用的C++语句是:__________。

22.C++中ostream类的直接基类是________。

23.运算符[ ]只能用________运算符来重载,不能用友元运算符来重载。

24.定义虚函数所用的关键字是________。

25.vector类中用于返回向量中第1个对象的方法是________。

26.在C++中,利用向量类模板定义一个具有20个char的向量E,其元素均被置为字符‘t’,实现此操作的语句是________。

27.类的继承是指子类继承基类的________和成员函数。

28.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为________。

29.________指令指示编译器将一个源文件嵌入到带该指令的源文件之中。

30.设类A有成员函数

void Fun(void);

若要定义一个指向类成员函数的指针变量pafn来指向Fun,该指针变量的声明语句是:________。

31.设在程序中使用如下语句申请了一个对象数组:

Point * ptr = new Point[2];

则在需要释放ptr指向的动态数组对象时,所使用的语句是________。

32.在保护派生中,基类权限为Private的成员在派生类中________。

33.类A有如下成员函数

int A::fun(double x){return (int) x/2;}

int A::fun(int x){return x*2;}

设a为类A的对象,在主函数中有int s=a.fun+(2),则执行该语句后,s的值为________。

34.对象传送的消息一般由3部分组成:接收对象名、调用操作名和________。

35.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的________。

36.在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主串中不含指定的子串,find函数的返回值是________。

37.在C++中,声明布尔类型变量所用的关键字是________。

38.执行下列代码

int a=29,b=100;

cout <

程序的输出结果是:________。

39.执行下列代码

cout <<″Hex:″<< hex << 255;

程序的输出结果为________。

40.C++语言中可以实现输出一个换行符并刷新流功能的操控符是________。

1.

C++的流库预定义了4个流,它们是cin、cout、clog和___。

答案:(P193)cerr

[解析]cin、cout、clog和cerr分别用于标准输入、输出、标准错误流(缓冲)和标准错误流

(非缓冲)。

2.

每个对象都是所属类的一个___。

答案:(P69)实例

[解析]类是对象的抽象,对象是类的一个实例。

3.

在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语

句___。

答案:(P78)int *ip=new int[10];

[解析]new用来动态开辟空间。常用来产生动态数组及对象构造函数。

4.

函数模板中紧随template之后尖括号内的类型参数都要冠以保留字___。

答案:(P145)class

[解析]类模板的使用。template ,也可以引入多参数的如:template

T1,class T2,...,class Tn>

5.

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

答案:(P80)无参

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

6.

表达式cout<

答案:‘\n’

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

7.

在C++中,访问一个指针所指向的对象的成员所用的指向运算符是___。

答案:->

[解析]指针使用成员有两种方法:“->”指向运算符和“.”成员访问运算符。

8.

假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个对象时,可以调

用___构造函数来完成此功能。

答案:(P80)复制或拷贝

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

9.

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

答案:(P183)类成员

[解析]运算符重载的方法有友元或者成员函数两种途径,但是赋值运算符只能使用成员函数的

方法来实现。

10.

如果要把A类成员函数f()且返回值为void声明为类B的友元函数,则应在类B的定义中加

入的语句___。

答案:(P109)friend void A::f();

[解析]成员函数作为另一个类的友元函数,格式为:friend 返回类型 类名::函数(形参)。

11.

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

for(i=0,j=10,k=0;i<=j;i++,j-=3,k=i+j);cout<

答案:4

[解析]for循环结构,三个表达式的作用,初始化、循环判断条件和循环变量变化。循环执行了

三次,k的作用是计算i、j的和。

12.

String 类的___方法返回查找到的字符串在主串的位置。

答案:(P40)find

[解析]string类对象方法的find,查不到字符串,则返回-1。

13.

int n=0;

while(n=1)n++;

while循环执行次数是___。

答案:无限次

[解析]=是赋值运算符,不是关系运算符,且不等0,所以死循环。

14.

控制格式输入输出的操作中,函数___是用来设置填充字符。要求给出函数名和参数类型

答案:(P195)setfill(char)

[解析]格式控制方法的使用,如setw,setfill等等。

15.

C++语言支持的两种多态性分别是编译时的多态性和___的多态性。

答案:(P167)运行时

[解析]多态性包括静态的(编译时)多态性和动态的(运行时)多态性。

16.

设函数sum是由函数模板实现的,并且sum(3,6)和sum,8)都是正确的函数调用,则函

数模板具有___个类型参数。

答案:(P61)2

17.

执行下列代码

string str("HelloC++");

cout<<(5,3);

程序的输出结果是___。

答案:(P42)C++

[解析]substr取子字符串,第1个参数表示要截取子串在字符串中的位置,第2个表示取多少个

字符。

18.

在面向对象的程序设计中,将一组对象的共同特性抽象出来形成___。

答案:(P38)类

[解析]类是相似特征的对象的抽象,对象是类的一个实例。

19.

定义类动态对象数组时,元素只能靠自动调用该类的___来进行初始化。

答案:(P77)无参构造函数

[解析]使用new 创建动态对象数组,不能有参数,所以只能调用无参的构造函数,初始化对象

20.

已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句是___。

答案:(P151)ector V2(V1);

[解析]采用向量初始化另一个向量的形式:vector name1(name);__

1.

假设int a=1,b=2;则表达式(++a/b)*b--的值为___。

答案:2

[解析]前缀++或――表示先使变量值变化,再使用,这和后缀恰恰相反。但是编译

cout<<(++a/b)*b--时,先++a/b值为1,后1*b--,先取b=2,结果为2,再让b=1。

2.

抽象类中至少要有一个___函数。

答案:(P173)纯虚

[解析]至少有一个纯虚函数的类就称为抽象类,即不能实例化。

3.

一个抽象类的派生类可以实例化的必要条件是实现了所有的___。

答案:(P173)纯虚函数的定义

[解析]抽象类只因有纯虚函数,所以不能被实例化,所以派生类要实例化必须对纯虚函数进行

定义。

4.

下面程序的输出结果为___。

#include <>

void main()

{int num=2,i=6;

do

{i--;

num++;

}while(--i);

cout<

}

答案:5

[解析]do-while循环,前缀先使i减少1后判断是否为零,不为零时再次执行循环,为零退出

循环。循环值执行3次就退出,所以结果为5。

5.

静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是___。

答案:(P109)友元函数

[解析]友元函数不是类成员,但可以访问类成员。类的封装性保证了数据的安全,但引入友元

,虽然访问类是方便了,但确实破坏类访问的安全性。

6.

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

答案:(P10)new

[解析]new与delete是C++语言特有的运算符,用于动态分配和释放内存。new用于为各种数据

类型分配内存,并把分配到的内存首地址赋给相应的指针。new的功能类似于malloc()函数。

使用new的格式为:

<指针变量>new<数据类型>;

其中,<数据类型>可以是基本数据类型,也可以是由基本类型派生出来的类型;<指针变量>取得

分配到的内存首地址。new有3种使用形式。

(1)给单个对象申请分配内存

int *ip;ip=new int;由const修饰的对象称为___。

答案:(P113)常对象

[解析]使用const关键字说明的成员函数称为常成员函数,使用const关键字说明的对象称为常

对象。

常成员函数的说明格式如下:<返回类型说明符><成员函数名>(<参数表>)const;

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

只能调用它的常成员函数,而不能调用其他成员函数。const关键字可以用于参与重载函数的区

分。

8.

在C++程序设计中,建立继承关系倒挂的树应使用___继承。

答案:(P138)单

[解析]一个基类可以派生多个子类,一个子类可以再派生出多个子类,这样就形成了一个倒立

的树。

9.

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

答案:(P132)访问控制方式或继承方式

10.

不同对象可以调用相同名称的函数,但执行完全不同行为的现象称为___。

答案:(P167)多态性

[解析]多态性的概念。虚函数是实现多态的基础,运行过程中的多态需要同时满足3个条件

:(1)类之间应满足子类型关系。(2)必须要有声明的虚函数。(3)调用虚函数操作的是指向对象

的指针或者对象引用;或者是由成员函数调用虚函数(如果是在构造函数或析构函数中调用虚函

数,则采用静态联编)。

11.

this指针始终指向调用成员函数的___。

答案:对象

this指针是隐藏的指针,它指向调用函数的对象。

12.

预处理命令以___符号开头。

答案:(P183)operater

[解析]文件包含、预处理和编译都是以#开头。

13.

类模板用来表达具有___的模板类对象集。

答案:(P145)相同处理方法

[解析]模板特点是不同的数据具有相同的处理方法的抽象。

14.

C++程序的源文件扩展名为___。

答案:(P21)cpp

[解析]源程序*.cpp,目标文件为*.obj,可执行程序*.exe。

15.

在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是___的头文件。

答案:(P7)自定义

[解析]#include装入文件有两种方式<>和“”,一是系统的,一是自定义文件。

16.

vector类中向向量尾部插入一个对象的方法是___。

答案:(P157)push_back

17.

C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取___方式。

答案:(P51)传地址或引用

[解析]传地址即指针,在函数中通过指针修改它指向的变量的值时,实参也就变化了。使用引

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

18.

语句序列

ifstream infile;

(“”);

的功能可用一个语句实现,这个语句是___。

答案:(P199)ifstream infile(“”);

[解析]void ifstream::open(const char *fname,int mode=ios::in,int

access=filebuf::openprot);

ifstream::ifstream(const char *fname,int mode=ios::in,int

access=filebuf::openprot);

其中,第一个参数是用来传递文件名的;第二个参数mode的值决定文件将如何被打开;第三个参

数access的值决定文件的访问方式,一般取缺省值filebuf::openprot,表示是普通文件。

mode的取值如下:(1)ios::in:打开一个文件进行读操作,而且该文件必须已经存在

;(2)ios::nocreate:不建立新的文件。当文件不存在时,导致open()失败

;(3)ios::noreplace:不修改原来已经存在的文件。若文件已经存在,导致open()失败

;(4)ios::binary:文件以二进制方式打开,缺省时为文本文件。

19.

如果要把类B的成员函数void fun()说明为类A的友元函数,则应在类A中加入语句___。

答案:(P111)friend void B::fun();

[解析]声明成员函数作为另外一个类的友元函数时,使用类作用域运算符::。

20.

在编译指令中,宏定义使用___指令。

答案:(P6、97)#define

[解析]静态成员是所有对象共享的特征,也就是类的特征。__

1.

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

答案:(P189)0

[解析]单目运算符使用成员函数重载可以不用形参,双目运算符使用一个参数。

2.

执行下列程序

int a=21,j=16;

(ios::hex);

cout<

(ios::hex);

cout<

程序的输出结果是___。

答案:(P196)1516

[解析]a=21以十六进制输出,j=16以十进制输出。

3.

为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常为该类定义___。

答案:(P80)析构函数

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

4.

复制构造函数使用___作为形式参数。

答案:(P80)对象的引用

[解析]复制构造函数使用对象的引用来初始化一个新对象,避免临时产生对象。

5.

假定用户没有给一个名为AB的类定义构造函数,则系统自动给出的缺省构造函数定义为

___。

答案:(P75)AB()

[解析]构造函数的名称必须同类名一致,为对象分配空间和初始化。构造函数不能指定返回类

型,函数体中不允许有返回值。构造函数可以重载,一个类可以定义多个参数个数不同的构造函

数。如果一个类没有定义任何构造函数,那么C++就自动建立一个默认的构造函数,没有形参

,仅创建对象而不作任何初始化。

6.

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

答案:(P165)虚函数

[解析]实现运行时多态性,需要在基类中声明虚函数或纯虚函数。

7.

重载函数在参数类型或参数个数上不同,但___必须相同。

答案:函数名

[解析]函数重载,形参个数、类型不同但函数名必须相同,返回类型可以不同。

8.

下面程序运行的结果是___。

#include <>

void main()

{ (*);

(5);

cout<<"hello"<

();

}

答案:hello

[解析]设置宽度是5但“hello”已经是5个宽度,所以不需要填充。

9.

局部对象和全局对象中,在同一程序中___生存期最长。

答案:全局对象

变量或对象的生命期或者作用域的不同,全局对象生命期长。

10.

用___修饰函数称为虚函数。

答案:(P170)virtual

[解析]虚函数的定义格式:virtual返回类型函数名(形参列表){}。

11.

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

(ios::showpos);

cout<<<

答案:(P193)+

[解析]输入、输出格式ios::showpos用于输出数据的符号位。

12.

在C++中,利用向量类模板定义一个具有10个int的向量V,其元素均被置为字符2,实现此

操作的语句是___。

答案:(P151)vectorV(10,2)

[解析]向量的操作,定义向量列表有多种形式,如

vectorV,vectorV(10),vectorV(10,2)或者vectorV(向量对象)。

13.

定义重载函数,应在___上有所不同。

答案:(P59)参数类型与参数的个数

[解析]重载必须在参数个数或参数类型不同,只有返回类型不同的函数不能构成函数的重载。

14.

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

答案:(P37)对象

[解析]对象是类的一个实例。类是对象的抽象。

15.

在函数体之前加___关键字可以防止覆盖函数改变数据成员的值。

答案:(P113)cons

[解析]const修饰的对象称为常对象,修饰的引用称为常引用它们的值不允许修改。

16.

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

答案:(P167)静态联编

[解析]在析构或构造函数调用虚函数发生静态多态性。

17.

若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的___语句。

答案:声明

[解析]函数使用有两部分:声明和定义。定义在前,可以无声明;但函数定义在后,调用在前

的话,需要先声明函数的原型。

18.

C++提供的预处理语句有3种,文件包含、条件编译和___。

答案:(P7)宏定义

[解析]预处理的语句有三种,文件包含、条件的编译和宏定义。

19.

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

答案:(P51)传引用

[解析](1)传值调用又分为数据传值调用和地址传值调用。(2)引用调用是将实参变量值传

递给形参,而形参是实参变量的引用名。引用是给一个已有变量起的别名,对引用的操作就是对

该引用变量的操作。

20.

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

答案:(P132)保护类型

[解析]基类是保护或公有的,采用保护继承后,在派生类中都是保护类型。

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

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

1.

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

答案:(P40)

[解析]编译时要将头文件引入才能使用标准库中的方法或成员。

2.

在函数前面用___保留字修饰时,则表示该函数表为内联函数。

答案:(P59)inline

[解析]内联函数,用来提高程序运行速度。在类内部定义的函数也是内联函数。

3.

向量操作方法中___方法返回向量中的第一个对象。

答案:(P151)front

[解析]考察向量方法的使用。front():返回向量中的第1个对象。back():返回向量中的最

后一个对象。operator[](size_type,n):返回向量中的第n+1个对象(下标为n的向量元素

)。

4.

C++派生类使用两种基本的面向对象技术:第一种称为性质约束,即对基类的性质加以限制

;第二种称为___,即增加派生类的性质。

答案:(P129)性质扩展

[解析]派生类通过继承可以从基类中获得成员,也可以自定义成员。

5.

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

答案:(P183)操作数

[解析]运算符重载时要遵循以下规则:

(1)除了类属关系运算符“.”、成员指针运算符“.*”、作用域运算符“::”、sizeof运算符

和三目运算符“:”以外,C++中的所有运算符都可以重载。

(2)重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的

运算符。

(3)重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及

语法结构。

6.

编译时的多态性通过___函数实现。

答案:(P165)重载

[解析]编译多态性,实现的方法主要通过函数的重载或运算符的重载。

7.

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

答案:(P7)条件编译

[解析]宏定义#define,文件包含#include和条件编译#if等。

8.

构造函数、析构函数和友元函数中,不是该类成员的是___。

答案:(P109)友元函数

[解析]友元函数不是类成员,但可以访问类中成员。

9.

控制格式输入输出的操作中,函数___是设置域宽的。要求给出函数名和参数类型)。

答案:(P193)setw(int)

[解析]setw(int n):用来设置n输出宽度。

10.

派生类的成员一般分为两部分,一部分是___,另一部分是自己定义的新成员。

答案:(P127)从基类继承的成员

[解析]派生类成员一个来自继承基类成员,一个来自本身增加的成员。

11.

C++中ostream的直接基类___。

答案:(P193)ios

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

12.

vector的___方法返回向量中的最后一个对象。

答案:(P151)back

[解析]front():返回向量中的第1个对象。back():返回向量中的最后一个对象。

operator[](size_type,n):返回向量中的第n+1个对象(下标为n的向量元素)。

13.

执行下列代码

int i=230;

cout <<"i="<

程序的输出结果为___。

答案:(P193)i=e6

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

14.

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

答案:(P51)引用

[解析]函数参数传递有传值和传引用两种。

15.

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

答案:(P10)new int[10];

[解析]new delete动态开辟空间和删除空间。new int[10],注意不要写成new

int(10),使用小括号只能开辟一个空间,使用10来初始化该值。

16.

面向对象的四个基本特性是多态性、继承性、和封装性___。

答案:(P37)抽象

[解析]考察面向对象的四个特征。程序由一组抽象的对象组成,一组对象的共同特征抽象出类

的概念,类是对象的抽象,对象是类的实例。封装即将数据和操作紧密结合提供访问的接口,外

部通过接口实现访问数据,提供安全性。继承继承解决了类的扩展性。多态性不同对象调用相同

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

17.

定义虚函数所用的关键字是___。

答案:(P170)virtual

[解析]在成员函数前加virtual修饰的函数就是虚函数。但不是所有成员函数都可以定义为虚

函数的。比如构造函数,不能定义虚函数。

18.

执行下列代码

cout<<“oct:”<

程序的输出结果是___。

答案:(P193)Oct:42

[解析]oct表示八进制,hex表示十六进制,但它们只能输出整型的数据。

19.

在C++中要创建一个文件输入流对象fin,同时该对象打开文件“”用于输入,则

正确的声明语句是___。

答案:(P200)ifstream fin(“”);

[解析]文件操作中ifstream用于文件的输入,可以调用它的构造函数与要打开的文件进行关联

20.

如果一个派生类只有一个唯一的基类,则这样的继承关系称为___。

答案:(P130)单一

[解析]根据派生类所拥有的基类数目不同,可以分为单继承和多继承。一个类只有一个直接基

类时,称为单继承;而一个类同时有多个直接基类时,则称为多继承。

基类与派生类之间的关系如下:

(1)基类是对派生类的抽象,派生类是对基类的具体化,是基类定义的延续。

(2)派生类是基类的组合。多继承可以看作是多个单继承的简单组合。

(3)公有派生类的对象可以作为基类的对象处理。__

1.

继承的方式有公有继承、私有继承和___。

答案:(P133)保护继承或protected

[解析]继承方式有三种:公有、私有和保护。

2.

表达式cout<

答案:(P193)cout<

3.

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

答案:(P127)继承

[解析]继承概念,从现有的类生成新类,原有的类称为父类或基类,新类又称子类或派生类或

衍生类,它是对基类的扩充。

4.

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

答案:(P193)cin

[解析]cin、cout和cerr clog分别进行输入、输出和错误处理。

5.

假设类X的对象x是类Y的成员对象,则“Y Obj”语句执行时,先调用类___的构造函数。

答案:(P130)X

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

6.

派生的新类同时可以增加或重新定义数据和操作,这称为类的___性。

答案:(P129)层次性

[解析]面向对象的主要特征:封装、抽象、多态和继承。

7.

C++中istream的直接基类___。

答案:(P194)ios

8.

C++程序是从___函数开始执行的。

答案:main()

[解析]C++的程序由若干个文件组成,文件名的后缀为.cpp。每个文件又是由函数组成,函数

之间可以调用。在这些函数中只有一个函数是主函数main()。程序执行时,操作系统先调用主函

数,主函数再依次调用其它函数完成设计任务。

9.

对已有的运算符赋予多重含义,使同一运算符能够对不同类型的数据进行操作,称为___。

答案:(P186)运算符重载

[解析]运算符重载,是特殊的函数重载,是对系统已有的部分运算进行的再定义。

10.

派生类的主要用途是可以定义其基类中___。

答案:(P127)不具有的成员

[解析]继承的特点,扩充基类,即在派生类中增加基类不具有的成员。

11.

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

答案:(P173)抽象类

[解析]带有纯虚函数的类称为抽象类。抽象类具有下述一些特点:

(1)抽象类只能作为基类使用,其纯虚函数的实现由派生类给出;但派生类仍可不给出纯虚函数

的定义,继续作为抽象类存在。

(2)抽象类不能定义对象,一般将该类的构造函数说明为保护的访问控制权限。

(3)可以声明一个抽象类的指针和引用。通过指针和引用,可以指向并访问派生类对象,进而访

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

12.

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

答案:(P80)对象的引用

[解析]拷贝即复制构造函数的使用对象的引用作为形参,避免临时产生对象。

13.

在C++中,利用向量类模板定义一个具有10个int的向量A,其元素均被置为1,实现此操作

的语句是___。

答案:(P151)vectorA(10,1)

[解析]定义向量列表vectorA(10,1),使用两个参数,10表示长度,1表示数值。

14.

一个const对象只能访问___成员函数。

答案:(P113)常

[解析]const对象只能访问常成员函数。

15.

C++是通过引用运算符___来定义一个引用的。

答案:(P10)&

[解析]引用是C不具有使用方法,它表示变量的别名,在函数中使用很频繁,因为调用形式同

传值调用,但修改形参实参也会相应改变的特征。

16.

执行___操作将释放由指针所指向的动态分配的数据空间。

答案:(P10)delete

[解析]delete用来删除new创建的对象。

17.

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

答案:2

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

18.

A是一个类,已有语句“A* p;p=new A[10];”。要释放由p指向的动态空间,正确的语句

应该是___。

答案:(P10)delete p;

[解析]delete释放动态分配的空间,p是一个一级指针,所以delete p。

19.

定义___函数时,应在参数个数或参数类型上有所不同。

答案:(P59~60)重载

[解析]重载函数要求同名函数具有相同的功能,而只能是函数类型、参数个数或参数顺序不同

。系统将根据同名函数的这些不同之处来选择其对应的实现。

20.

执行下列代码

int a=32;

double c=32;

(ios::hex);

cout<<"hex:a="<

(ios::hex);

程序的输出结果为___。

答案:(P193)hex:a=20,c=32

[解析]用十六进制只能输出整型数据,而不能将其它类型数据转换成十六进制的数据输出。所

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

1.

在定义成员函数时,函数体之前加上___防止覆盖函数改变数据成员的值。

答案:(P114)const

[解析]使用const关键字说明的成员函数称为常成员函数,常成员函数的说明格式如下:<返回

类型说明符><成员函数名>(<参数表>)const;

在使用常成员函数时要注意:

(1)const是函数类型的一个组成部分,因此在函数实现部分也要带有const关键字。

(2)常成员函数不更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。

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

2.

如果一个引用不是用作函数参数或返回值,则在说明该引用时必须对它进行___。

答案:(P10)赋予初始值

[解析]除了作为形参或返回值,声明引用必须进行初始化,即必须指明它所引用的变量或者对

象。

3.

如果要把PI声明为值为类型为双精度实数的符号常量,该声明语句是___。

答案:(P6)const double PI;或者const double PI=;

[解析]使用const声明符号常量,常量和常量值可以用括号也可以赋值号。

4.

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

答案:(P167)编译

[解析]多态性有两种:编译时的多态性和运行时的多态性。

5.

将指向对象的引用作为函数的形参,形参是对象的引用,实参是 ___。

答案:(P53)对象名

[解析]实参与形参类型要一致,形参是对象的引用,实参应该是对象名。

6.

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

答案:(P69)private

[解析]定义类时的成员默认为私有,而结构体则是公有。

7.

___多态性通过虚函数来实现的。

答案:(P139)运行多态性

[解析]多态性分为静态和动态两种。

8.

C++中有两种继承:单继承和___。

答案:(P138)多继承

[解析]单继承和多继承,多继承即有多个基类。

9.

如果通过同一个基类派生一系列的类,则将这些类总称为___。

答案:(P174)类族

[解析]单继承方式派生的众多的类。

10.

带有___的类称为抽象类。

答案:(P173)纯虚函数

[解析]类中至少有一个纯虚函数,该类就称为抽象类,抽象类不能定义对象。

11.

设要把一个文件输出流对象outfile与文件“d:\”相关联,设置以二进制形式

打开。所用的C++语句是___。

答案:(P199)(“d:\\”,ios_base::out|ios_base::binary);。

[解析]文件操作,也可以定义流对象时使用构造函数直接与文件关联,格式:文件流类对象

(“文件名”,打开方式);。

12.

静态成员定义的关键字为___。

答案:static

[解析]静态成员是类中所有对象共享特征,使用static关键字来说明。静态数据成员在每个类

对象中并不占有存储空间,静态数据成员的值对每个对象都是一样的,但它的值可以被任何一个

对象更新,从而实现了同一类的不同对象之间的数据共享。静态数据成员具有静态生存期,必须

对它进行初始化。静态数据成员初始化的一般格式如下:<数据类型说明符><类名>::<静态数据

成员名>=<初始值>;。

13.

下面程序的输出结果为___。

int num=2,i=6;

while(--i);

{i--;

num++;

}

cout<

答案:33

[解析]i=6进入循环,但是要注意,while后面是分号,表示循环的结束,也就是说while循环

体是空的。执行5次循环,退出循环后,执行i--,num++,原num=2,所以此时num=3。

14.

在删除一个动态对象时,将自动调用该动态对象所属类的___函数。

答案:(P80)析构

[解析]在下列情况下,析构函数会自动被调用:

(1)如果一个对象被定义被一个函数体内,当这个函数结束时,该对象的析构函数被自动调用

(2)若使用new运算符动态创建一个对象,在使用delete运算符释放时,delete将会自动调用析

构函数。

15.

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

答案:(P109)友元

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

16.

在派生类中实现基类成员的初始化,需要由派生类的构造函数调用___来完成。

答案:(P127)初始化列表

[解析]定义派生类对象,先执行基类构造函数、后执行本类的构造函数。

17.

在C++中,编译指令都是以___(符号)开始。

答案:#

C++的源程序可包括各种编译指令,以指示编译器对源代码进行编译之前先对其进行预处理。所

有的编译指令都以#开始,每条指令单独占用一行,同一行不能有其他编译指令和C++语句(注释

例外)

18.

假定用户为类AB定义了一个构造函数“A (int i=0):x(i){}”,则定义该类的对象,与该

语句等价的格式为___。

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

[解析]在构造函数中对数据成员的初始化可以采用列表的形式,也可以在函数体内进行赋值操

作。

19.

在单继承和多继承方式中,面向对象的程序设计应尽量使用___继承。

答案:(P138)单

[解析]多继承是单继承的扩展,且多继承易产生二义性等问题。

20.

在C++中,虚函数帮助实现了类的___。

答案:(P170)多态性

[解析]动态多态性是通过基类指针或引用结合虚函数来实现的。__

1.

设类A有成员函数void f(void);若要定义一个指向类成员函数的指针变量pf来指向f,该

指针变量的声明语句是:___。

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

[解析]void(A::*pf)(void)=&A::f;指向成员函数的指针,它相当于两条语句

:void(A::*pf)(void);和pf=&A::f;。

2.

执行下列程序

double a=,b=;

cout<

程序的输出结果是___。

答案:,

[解析]题目设置精度即有效数字都是5,a四舍五入是,b是。

3.

vector类中用于删除向量中的所有对象的方法是___。

答案:(P151)clear()

[解析]向量的使用。返回向量中对象的方法有:front()back()operator[],在向量中删

除对象的方法pop_back erase clear。

4.

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

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();

};

答案:(P69)X,Y,length,height

5.

在C++中,访问指针所指向的对象的成员使用___运算符。

答案:->或.

[解析]使用指针访问成员有两种方法:成员运算符“.”或指向运算符“.”。

6.

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

答案:(P165)静态或编译

[解析]多态性包括静态(编译时)的和动态(运行时)的动态性。

7.

C++中语句const char * const p=“hello”;所定义的指针p和它所指的内容都不能被

___。

答案:(P12)修改

[解析]使用const修改的内容不能修改,这里同时修饰地址和值,表示地址和值都不变。

8.

假定AB 为一个类,则语句AB(int i=0);为该类___函数的原型说明。

答案:(P80)带默认值的构造函数

[解析]带默认值参构造函数,即建立对象时没有参数时,则采用默认值0。

9.

在C++中,定义虚函数的关键字是___。

答案:(P170)virtual

[解析]在普通函数前面用virtual修饰的函数,就称为虚函数。

10.

采用私有派生方式,基类的public成员在私有派生类中是___成员。

答案:(P132)私有

11.

在面向对象程序设计中,将一组数据和这组数据有关的操作集合组装在一起形成对象,这

个过程叫___。

答案:(P74)封装

封装即将数据和函数组合起来。

12.

___规则是指在公有派生情况下,一个派生类的对象可以作为基类的对象来使用的地方。

答案:(P133)赋值兼容

[解析]继承概念,派生类对象可以作为基类对象使用。结合指针或引用调用虚函数可以实现多

态性。

13.

C++语言的函数参数传递方式有传值和___。

答案:(P51)传引用

[解析]参数传递的方式有两种传值和传引用,传值又分为传地址值和传数值两种。

14.

对某个运算符的重载,实际上是用关键字___与该运算符组成一个运算符函数。

答案:(P183)operater

[解析]运算符的重载即对运算符赋予更多的含义。使用关键字operator+函数组成的,只是该

函数是特殊的函数,函数名是运算符。

15.

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

答案:(P61)template

[解析]类模板,函数模板都要使用template这一关键字。

16.

在C++语言中,访问一个对象的成员所用的成员运算符是___。

答案:.

[解析]成员运算符“.”,如果是指针可以使用“->”。

17.

通过C++语言中的类的___,可以扩充和完善已有类以适应新的需求。

答案:继承

[解析]类的继承,实现类扩展。

18.

开发一个C++语言程序的步骤通常包括编辑、___、连接、运行和调试。

答案:(P21)编译

[解析]vc开发过程,要经过编辑、编译、连接和运行四个步骤,与其它高级语言相同。

19.

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

int a=5,b=4,c=3,d;

d=a>b>c;

cout<

答案:0

[解析]运算符级别高低不同,赋值号级别低,关系表达式的值是逻辑值。a>b是真,为1,但不

大于c=3,所以为假即0,所以d为0;逻辑值可以用1或0表示真或假。

20.

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

答案:(P194)cout

[解析]cin、cout、cerr和clog中cin用于输入,cout用于输出,cerr、clog错误处理。__

C++自考填空题

本文发布于:2024-02-07 18:15:34,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170730093465610.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   对象   成员   解析   使用   定义   运算符   基类
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23