2024年C试题库加答案_第1页
2024年C试题库加答案_第2页
2024年C试题库加答案_第3页
2024年C试题库加答案_第4页
2024年C试题库加答案_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

选择题

1.在C++中,函数原型不能襟识(D)

A.函数的返回类型B.函数参数的倜数C.函数参数类型D.函数的功能

2.在C++程序中,封象之间的互相通信通谩(B)

A.继承实琨B.调用组员函数实现C.封装实现D.函数重载实现

3.封于任意壹种类,析构函数的值1数最多卷(B)

A.0B.1C.2D.3

4.友元关系不能(A)

A.继承B.是类与类的关系C.是壹种类的组员函数与另壹种类的关系D.提高程序的运行

效率

5.G吾句ofstreamf("SALARY.DAT",ios::appIios:句inary);的功能是建立流封象f,

试图打^文献SALARY.DAT并与之连接,并且(A)

A.若文献存在,将文献写指针定位于文献尾;若文献不存在,建立壹种新文献

B.若文献存在,将其置卷空文献;若文献不存在,打^失败

C.若文献存在,将文献写指针定位于文献首;若文献不存在,建立壹种新文献

D.若文献存在,打^失败;若文献不存在,建立壹种新文献

6.下面^法封的的是(B)

A.内联函数在运行畤是将该函数的目的代码插入每低I调用该函数的地方

B.内联函数在编译畤是将该函数的目的代码插入每他I调用该函数的地方

C.类的内联函数必须在类体内定义

D.类的内联函数必须在类体外通谩加关键字inline定义

7.可以用p.a的形式访冏派生类封象P的基类组员a,其中a是(D)

A.私有继承的公有组员

B.公有继承的私有组员

C.公有继承的保护组员

D.公有继承的公有组员

8.在公有派生状况下,有关派生类卦象和基类封象的关系,不卦的的论述是(C)

A.派生类的封象可以赋Z合基类的射象

B.派生类的封象可.以初始化基类的引用

C.派生类的射象可以直接访冏基类中的组员

D.派生类的封象的地址可以赋给指向基类的指针

9.派生类封象可访冏基类中的什么组员(A)

A.公有继承的公有组员

B.公有继承的私有组员

C.公有继承的保护组员

D.私有继承的公有组员

10.定义析构函数畤,应常注意(C)

A.其名与类名完全相似

B.返回类型是void类型

C.辗形参,也不可重载

D.函数体中必须有delete言吾句

11.假如类A被阐明成类B的友元,则(D)。

A.类A的组员即类B的组员

B.类B的组员即类A的组员

C.类A的组员函数不得访冏类B的组员

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

12.面向封象程序设计将数据与(A)放在壹起,做卷壹种互相依存、不可分割的整体

来处理。

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

13.在类中申明转换函数畤不能指定(A)。

A.参数B.访冏权限C.操作D.檄识符

14.在派生类中重新定义虚函数畤必须在(A)方面与基类保持壹致。

A.参数类型B.参数名字C.操作内容D.赋值

15.下面有关C++中类的继承与派生的法金昔误的是(C)0

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

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

C.公有派生畤,基类的所有组员访冏权限在派生类中保持不变

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

16.重载赋值操作符畤,应申明卷(C)函数。

A.友元B.虚C.组员D.多态

17.在下面选项中,封类的拷贝构造函数的申明形式是(B)

A.A::A(&)B.A::A(constA&)C.A::A(A)D.voidA::A(A&a)

18.下面有关组员函数特性的描述中,金昔误的是(A)

A.组员函数不可以设置参数的默认值

B.组员函数可以重载

C.组员函数可以是内联函数

D.组员函数可以是静态的

19.下面有关类模板论述不封的的是(B)

A.可以有多种构造函数

B.类模板是模板类的实例

C.壹种类模板可以用来实例化多种模板类

D.类模板可以有多种参数

20.要使壹种类成卷抽象类,iSf固类应具有的条件是(A)

A.至少有壹种纯虚函数

B.至少有壹种虚函数

C.只具有宜种纯虚函数

D.只具有壹种虚函数

21.有关运算符重载封的的描述是(D)

A.C+若吾言容言午在重载运算符H与变化运算符的操作他|数

B.吾言容言午在重载运算符H寺变化运算符的优先级

C.言容言午在重载运算符畤变化运算符的结合性

D.C++言吾言容宗午在重载运算符畤变化运算符的本来的功能

22.下列^法封的的是(D)。

A.壹种类的封象可以是另壹种类的组员

B.壹种类可以作卷另壹种类的派生类

C.壹种类可以在另壹种类定义体迤行定义

D.以上^法均封的

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

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

24.派生类的封象封它的基类组员中(A)是可以访冏的。

A.公有继承的公有组员

B.公有继承的私有组员

C.公有继承的保护组员

D.私有继承的公有组员

25.下面有关构造函数和new运算符关系封的的^法是(D)

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

B.构造函数壹定调用new运算符

C.常生成新类的实例畤,先调用new运算符,然彳爰调用构造函数迤行初始化

D.常new运算符勒态产生类的射象畤,new运算符也自勒调用构造函数

26.下面有关类性质的^法^误的是(D)

A.壹种类可以有多种构造函数,但只有壹种析构函数

B.析构函数和构造函数都不能有返回类型

C.不能给析构函数指定参数

D.宜种类中不可以申明具有类类型的数据组员

27.下面有关友元函数描述封的的是(C)

A.友元函数是类的组员

B.友元函数在类的外部申明

C.友元函数在类中中明

D.友元函数可以派生

28.下面论述封的的是(D)

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

有的

C.封基类组员的访冏容宗午二义性D.赋值兼容规则也合用于多重继承的组合

29.下面描述中,体误的是(B)

A.公有继承畤基类中的public组员在派生类中仍是public的

B.公有继承是基类中的private组员在派生类中仍是private的

C.公有继承日寺基类中的protected组员在派生类中仍是protected的

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

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

A.某他封象名B.某值I封象的组员名C.某10封象的引用名D.某值I封象的指针名

31.下列有关构造函数的描述中,籍误的是(D)

A.构造函数可以设置默认参数

B.构造函数在定义类封象畤自勤执行

C.构造函数可以是内联函数

D.构造函数不可以重载

32.数组作卷函数的形参畤,把数组名作卷实参,传递^函数的是(A)

A.该数组的首地址

B.该数组的元素低I数

C.该数组中的各元素值

D.该数组的大小

33.通谩壹种析构函数调用虚函数畤,C++系统封该调用采用(B)。

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

34.下面有关重载函数的gft法中封的的是(C)

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

B.重载函数形参他数必须;

C.重载函数必须有不堂样的形参列表;

D.重载函数名可以不壹样;

35.使用string类建立封象的不封的方式是(D)。

A.stringstr("OK”);

B.stringstr二“OK”;

C.stringstr;

D.stringstr=,OK';

36.有关C++中类的继承与派生的音兑法拿昔误的是(C)

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

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

C.私有派生畤,基类的所有组员访冏权限在派生类中保持不变

D.继承可以分卷罩壹继承与多重继承

37.壹种类的析构函数(A)

A.唯壹的B.容^重载C.至多可有两他D.只能是缺省的

38.下面有关静态组员描述封的的是(B)

A.静态组员是封象的数据组员

B.静态组员是封象的组员

C.静态组员是封象的组员函数

D.静态组员不是封象的组员

39.下面论述封的的是(D)

A.基类的保护组员在派生类中仍然是保护的

B.基类的公有组员在派生类中仍然是公有的

C.基类的私有组员在派生类中是私有的

D.彳生基类派生畤,可以有3种派生措施

40.阐明内联函数的关键字是()o

A.inlineB.virtualC.defineD.static

41.假定CAb卷壹种类,则执行CAboX;IS句畴将自勤调用该类的()

A.有参构造函数B.辗参构造函数

C.拷贝构造函数D.赋值重载函数

42.cin是某他类的原则封象的引用,该类是()。

A.ostreamB.istreamC.stdoutD.stdin

43.下面的哪他保留字不能作卷函数的返回类型?()

A.voidB.intC.newD.long

44.不能参与重载的运算符是()o

A.类B.函数C.函数模板D.运算符

45.由于数据隐藏的需要,静态数据组员壹般被阐明卷()。

A.私有的B.公有的C.保护的D.不可访冏的

46.编译畤多态性使用什么获得?()

A.重载函数B.继承C.虚函数D.B和C

47.拷贝构造函数的参数壹般是()o

A.辗特殊规定B.指向封象的指针

C.自己类封象的常引用D.封象

48.C++有几种联编?()

A.1种B.2种C.3种D.4种

49.基类和派生类可以分别称卷()o

A.“大类”和“小类”B.“父类”和“子类”

C.“小类”和“大类”D.“子类”和“父类”

50.下列封类的构造函数和析构函数描述封的的是(A)。

A)构造函数可以重载,析构函数不能重载

B)构造函数不能重载,析构函数可以重载

C)构造函数可以重载,析构函数可以重载

D)构造函数不能重载,析构函数不能重载

51.在函数定义前加上关键字“inline”,表达该函数被定义卷(B)。

A)重载函数B)内联函数

C)组员函数D)壹般函数

52.下面有关重载函数的阐明中,(C)是封的的。

A)重载函数必须具有不壹样的返回值类型

B)重载函数形参低I数必须不壹样

0重载函数必须具有不壹样的形参列表

D)重载函数名可以不壹样

53.已知:print()函数是登种类的常组员函数,它瓢返回值,下列表达中,射的

的是(A)o

A)voidprint()const;B)constvoidprint();

C)voidconstprint();D)voidprint(const)

54.假定Myclass卷壹种类,那么下列的函数阐明中(D)卷该类的析构函数。

A)void~Myclass();B)~Myclass(in二n);

C)Myclass();D)〜Myclass()

55.下面类的定义中有(C)处名昔误。

classmyclass{inti=0;public:voidmyclass();

'myclass(value);)

A)1B)2C)3D)4

56.阐明虚函数的关键字是(B)o

A.inlineB.virtualC.defineD.static

57.cout是某他类的原则封象的引用,该类是(A)o

A.ostrcamB.istreamC.stdoutD.stdin

58、壹种类的所有卦象共享的是(D)。

A.私有数据组员B.公有数据组员

C.保护数据组员D.静态数据组员

5g.静态组员函数没有(B

A.返回值B.Ihis指针C.指针参数D.返回I类型

60.有关C++与C言吾言关系的描述中,(D)是金昔误的。

A.C^言是C+十言吾言的壹种子集

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

C.o+言吾言封C^言暹行了某些改善

D.C++言吾言和C言吾言都是面向量寸象的

61.按照楝识符的规定,(A)符号不能构成襟识符。

A.连接符B.下划线

C.大小写字母D.数字字符

62.卷了防止嵌套的if-else^句的二义性,(^吾言规定-S^^是与(C)构成配封关

系。

A.缩排位置相似的ifB.在其之前未配封的if

C.在其之前未配封的近来的ifD.同壹行上的if

63.在〃iniA[][3]-{{1},{3,2},{4,5,6},{0}};〃中,A[2][2]的值是(C)o

A.1B.0C.6D.2

64.设〃Char**s;〃,如下封的的体现式是(B)。

A.s二〃Computer”;B.*s=〃Computer〃;

C.**s="Computer”;D.*s='C;

65.封于〃int*pa[5];〃的描述中,(D)是封的的。

A.pa是壹种指向数组的指针,所指向的数组是5fflint型元素

B.pa是壹种指向某数组中第5倜元素的指针,该元素是int型变量

C.pa[5]表达某低1元素的第5他元素的值

D.pa是壹种具有5他元素的指针数组,每f0元素是壹种int型指针

66.在下列表达引用的措施中,(A)是封的的。

已知:intm=10;

A.int&x=m;B.int&y=10;

C.int&z;D.floAt&t二

67.下列for循环的次数卷(B)o

for(i=0,x=0;!x&&i*5;i++)

A.5B.6C.1D.瓢限

68.封于C/C++言吾言的函数,下列论述中封的的是(A)o

A.函数的定义不能嵌套,但函数调用可以嵌套

B.函数的定义可以嵌套,但函数调用不能嵌套

C.函数的定义和调用都不能嵌套

D.函数的定义和调用都可以嵌套

69.在壹种被调用函数中,有关return^句使用的描述,(D)是^误的。

A.被调用函数中可以不用return^句

B.被调用函数中可以使用多种return^句

C.被调用函数中,假如有返回值,就壹定要有return语句

D.被调用函数中,壹种return^句可以返回多种值^调用函数

70.在壹种函数中,规定通谩函数来实现壹种不太复杂的功能,并且规定加紧执行速度,

选用(A)。

A.内联函数B.重载函数

C.递归调用D.嵌套调用

71.(D)不是构造函数的特性

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

B.构造函数可以重载

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

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

72.已知:类A中壹种组员函数阐明如下:

voiDSet(A&A);

其中,A&的含义是(C)。

A.指向类A的指针A

B.将A的地址值赋幺合变量Set

C.A是类A封象的引用,用来作函数Set()的参数

D.变量A与A按位与作卷函数Set()的参数

73.已知:print()函数是壹种类的常组员函数,它辗返回值,下列表达中,(A)是

封的的。

A.voidprint()const;B.constvoidprint();

C.voidconstprint();D.voidprint(const);

74.有关虚函数的描述中,(C)是封的的。

A.虚函数是壹种static类型的组员函数

B.虚函数是壹种非组员函数

C.基类中阐明了虚函数彳菱,派生类中将其封应的函数可不必阐明卷虚函数

D.派生类的虚函数与基类的虚函数具有不壹样的参数他数和类型

75.有关new运算符的下列描述中,(D)是金昔的。

A.它可以用来勤态创立封象和封象数组

B.使用它创立的封象和封象数组可以使用运算符Delete删除

C.使用它创立封象畤要调用构造函数

D.使用它创立封象数组H寺必须指定初始值

76.若有定义inta=3,*p=&a;则*p的值是(B)

A)常量a的地址值B)3

C)变量p的地址值D)辗意义

77.在下列有关C++与言关系的各描述中,(D)是绪误的。

A)C言吾言是C++的壹种子集;B)C言与C++是兼容的;

OC++封(:者吾言迤行了某些改善;D)C++和言都是面向封象的。

78.在下列有关类概念的各描述中,(A)是金昔误的。

A)类就是C/吾言中的构造体类型;

B)类是具有共同行卷的若干封象的统壹描述体;

O类是创立卦象的样板;

D)类是抽象数据类型的实现。

79.采用函数重载的目的在于(D)

A)实共享B)减少空间

0提高速度D)使用以便,提高可^性

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

A)构造函数B)析构函数

C)友元函数D)拷贝初始化构造函数

81.下列静态数据组员特性中,(D)是拿昔误的。

A)阐明静态数据组员H寺前边要加修饰符static;

B)静态数据组员要在类体外暹行初始化;

0引用静态数据组员畤,要在静态数据组员名前加〈类名>和作用域辨别符;

D)静态数据组员不是所有封象共有的。

82.如下各选项中,封的的函数申明是(C)

A)doublefunc(intx,inty)

B)intfunc(intx;inty);

C)floatfunc(intx,inty);

D)charfunc(intx,y);

填空题

1.定义类的勤态封象数组畴,系统只可以自勤调用该类的(辗参)构造函数封其谨行初始

化。

2.在C++程序设计中,建立继承关系倒挂的树应使用(罩壹)继承。

3.体壬电式cout〈〈endl遢可表达焉(cout«,\n,)。

4.基类的公有组员在派生类中的访冏权限由(访冏控制)决定。

5.C++支持的两种多态性分别是编译畤的(操作重载)(静态)多态性和运行畤的(虚函

数)(勃态)多态性。

6.C++中^句constchar*constp-whellow;所定义的指针p和它所指的内容都不

能被(变化(重新赋值))。

7.假定AB^壹种类,则^句AB(AB&x);卷该类(拷贝)构造函数的原型阐明。

8.将关键字const写在组员函数的(函数反直)和(函数体)之间畤,所修饰的是this指

针。

9.在C++中,访冏壹种封象的组员所用的运算符是(・),访冏壹种指针所指向的封象的

组员所用的运算符是(->)。

10.派生类优壹种或多种此前定义的该类的(基类)。

11.运算符重载畤,其函数名由(operator运算符)构成。组员函数重载双目运算符

畤,左操作数是(目前封象),右操作数是(.函数形参r

12.C++支持面向封象程序设计的四他要素是:(封装性)、(继承性)、(抽象性)和(多态

性)。o

13.模板分卷(类)模板和(函数)模板。

14.定义内联函数所用的关键字(inline),定义友元所用的关键字卷(friend)。

15.常壹种派生类具有多种基类畤,适种继承方式称卷(多重继承)。

16.通谩壹种构造函数调用短函数畤,C++系统封该调用采用(静态)联编。

17.任何类中容言午有(private)、(public)、(protected)三种访冏控制类型的组员,

数据组员和组员函数的默认类型^(private)o

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

19.运算符重载使用的两种方式是(组员函数)和(友元函数)。

20.组员名限定的符号是(::),它可以在引用组员畤防止(二义性)。

21.在用class定义壹种类畤,数据组员和组员函数的默认访冏权限是(privated)。

22.已知intDBL(intn){returnn+n;}和longDBLdongn){returnn+n;}是壹种函

数模板的两偃I实例,则该函数模板的定义是(lemplale<classT>TDBL(Tn){return

n+n;})。(规定写出函数模板的完整定义)

23.静态数据组员必须在(类外)迤行初始化。

24.具有纯虚函数的类称卷(抽象类)。

25.若Queue是壹种类,aQueue是它的壹种封象,并且该类中定义了壹种静态组员函数

show()则在类外封该组员的函数暹行调用的方式可认卷(aQucue.showQ)和

(Queue::show())0

26.定义内联函数所用的关键字卷(inline),定义友元所用的关键字卷(friend)。

27.使用组员函数重载运算符畤,若运算符是二元的,则参数表中有⑴值I操作数,此

畤(目前封象)作卷此运算符的左操作数。

28、C++程序中,封象的初始化和清理工作,分别由两值1特殊的组员函数(构造函数)

和(析构函数)来完毕。

29、在C++中,分别用(变量)与(函数)来体现某种事物的所具有的属性和行卷,并

且将它凭封装在壹起,形成壹种抽象数据类型一一(类)。

30、莒用壹种卦象初始化另壹种新的同类封象,将调用(),其特殊之处在于:形参是

()o

31、模板是C++支持参数化的工具,我凭壹般用类模板和函数模板,适些只是面向封象

的()性的壹种方面。

32、假如在某他类定义中用关键字()申明了壹种外部函数(也^是其他类的壹种组员)

彳灸,造倜外部函数就可以例外的方冏该类的任何组员,造低I外部函数称卷类的()函数。

33、可以将类的组员申明卷static,使其成卷()o逅样的组员在编译畤被创立,其实

例只有壹种,卷所有该类的封象()。

34、()是勤态勤态联编的基础。它是非静态的组员函数,通谩()之彳爰,在类族中可

以实现运行遇程中的多态。

35、程序中有*如下言吾句:

inta=30;intb=a++;intc=++a;则b=(),c=()

数组A[20][20]中,第壹种元素是(),最终壹种元素是()

36、申明壹种int型指针,其勤态分派含10值I元素的地址空间:()o

37.在类中必须申明组员函数的(原型),组员函数的(实现)部分可以写在类外。

38.假如需要在被调函数运行期间,变化主调函数中实参变量的值,则函数的形参应富

是(引用)类型或(指针)类型。

39.(抽象)类只能作卷基类使用,而不能申明它的封象。

40.迤行函数重载畤,被重载的同名函数假如都没有用const修饰,则它伊号的形参(低I

数)或(类型)必须不壹样。

41.通谩壹种(常)封象只能调用它的常组员函数,不能调用其他组员函数。

42.函数的递归调用是指函数直接或间接地调用(自身)。

43.拷贝构造函数的形参必须是(本类封象的引用)。

44.设函数max是由函数模板实现的,并且max(3.5,5)和max(3,5)都是封的的函数

调用,则此函数模板具有(2)彳固类型参数。

45.在C++中,函数重载与虚函数协助实现了类的(多态)性。

46.由static修饰的数据组员卷该类的所有封象(共享)。

47.重载函数在参数类型或参数值1数上不壹样,但(函数名)相似。

48.使用new建立的勃态封象在不用峙必须用(delete)释放所占用的空间。

49.重载运算符”一”的函数名卷(oprator-)。

50.C++中类的用途有两种,壹种是类的实例化,即生成类的封象,另壹种是通谩

(维承),派生出新的类。

51.编译畤多态性可以用(重载)函数实现。

52.壹种C++程序的执行优(main)函数明始,到(main)函数皓束。

53.在C++中,函数在定义畴可以预先定义出默认的形参值。默认形参值必须按(优

右到左)的次序定义。由于在调用畤,实参初始化形参是按(彳於左到右)的次序。

54.类是逻辑上有关的(函数)与(数据)的封装。特殊类的封象拥有其壹般类的所有

属性与服务,称作特殊类封壹般类的(继承)。

55.在C++中,函数的参数有两种传递方式,它俨是值传递和(地址或指针或引用传递)。

56.常壹种组员函数被调用畤,该组员函数的(this指针)指向调用它的封象。

57.在基类和派生类中,派生类可以定义其基类中不具有的数据和操作。封两他有相似

名字的数据组员暹行访冏畤,假如没有(作用域分隔符限定期),封此数据组员的访冏

将出现歧义。

58.拷贝构造函数使用(引用)作卷参数初始化创立中的射象。

59.在公有继承的状况下,基类数据组员在派生类中的访罔权限(保持不变)。

60.用new申^某壹种类的勤态封象数组畤,在该类中必须可以匹配到(没有形参的

或缺省参数)构造函数,否则应用程序曾产生壹种编译^误。

61.静态数据组员在类外迤行初始化,且静态数据组员的登种拷贝被类的所有封象(共

享)。

62.卷了防止也言午出现的歧义,C++封if…else音吾句配封规则规定卷:else,穗,是与(与

近来的if)配封。

63.面向封象的程序设计有四大特性,它优是抽象、封装、(继承)、(多态)。

64.在C++中,定义重载函数畤,应至少使重载函数的参数值I数或参数类型(不壹样);

在基类和派生类中,组员函数的覆盖是指(派生类组员函数与在基类被覆盖的组员函数

名、参数他1数、参数类型和返回值类型均相似)。

65.构造函数与析构函数除功能不宜样外,在定义形式_L,它年号的区别遢包括构造函

数名与类名相似,而析构函数名是在类名前加壹种~、(析构函数没有参数)、(析构函数

可以定义卷虚函数)。

66.勤态联编要满足两体I条件,它伤是(被调用的组员函数是虚函数)、(用指针或引

用■■调用虚函数)。

67.在C++类中,有壹种不能定义封象的类,道样的类只能被继承,称之卷(抽象类),

定义该类至少具有壹种(纯虚函数)。

68.在C++类中,const关键字可以修饰封象和组员函数,const封象不能(被修改),

const组员函数不能(修改类数据组员)。

69.C++中没有字符串类型,字符串是通谩(字符数组〕来表达的,每壹种字符串均有

壹种结尾字符(\0)。

70.C++中没有输入输出言吾句,输入输出是通谩(输入输出库)实IS的,写出壹条打

印整型变量n的输出!§句:(cout«n;)0

71.举出C++中两种代码复用的方式:(继承)、(重载)。

判断正误题

(判断正误,在题彳爰的括号内,封的的划上“金音误的划上"X"。)

I.不可以定义抽象类的封象。(V)

2.内联函数的定义必须出目前第壹次调用内联函数之前。(V)

3.模板函数与函数模板的意义完全相似。(X)

4.只有常组员函数才可以操作常封象。(J)

5.引用可以不初始化。(X)

6.构造函数可以设置默认参数

(V)

7.类的析构函数的作用是封象的初始化

(X)

8.cout的默认输出封象是键盘,cin的默认输入封象是屏幕

X)

9.抽象类可以用来直接创立封象。(X)

10.常封象可以调用任意组员函数。(X)

简答题

1、虚析构函数有什么作用?

解答要黠:

封象销毁畤,需要调用析构函数。在多态调用畤,是用基类的指针访冏派生类的封

象。假如析构函数是非虚函数,则基类指针只能访冏基类的析构函数,而不能访冏派生

类的析构函数,导致派生类封象销毁H寺,没有调用派生类的析构函数,只是调用了基类

的析构函数。假如把析构函数定义成虚函数,则可克服造彳固冏题。

2、拷贝构造函数在哪几种状况下调用?

解答要黠:

用壹种封象初始化另壹种封象畤

常用射象作卷函数参数传递畤

'常函数返回封象畤

3、函数重载与函数覆盖有什么不壹样,它乃与多态有什么关系?

解答要钻:

区数重载是指函数名相似,而函数的参数彳固数或类型不壹样;覆盖是指在派生类中

组员函数与基类组员函数的函数名、参数低I数、类型与返回值均相似;C++中正是通谩

虚函数的覆盖,实现多态的功能。

4、C++继承是怎样工作的?

答:继承使得派生类可以使用基类的公有和保护组员,优而实现代码的复用,派生

类可以增艮组员,也可以隐藏和覆盖基类的组员。封于公有继承,基类组员的访冏权限

在派生类保持不变。

5、类与封象有什么区别?

答:类是类型,是封象的抽象,封象是类的详细实例。壹种类可以有多种封象,每

f0封象均有自己的存储单元,而类不占存储单元。

6.若程序员没有定义拷贝构造函数,则编译器自勤生成壹种缺省的拷贝构造函数,它

也^^产生什么冏题?

解答要黠:常封象具有指针数据组员,并用它初始化同类型的另壹种封象畤,缺省的拷

贝构造函数只能将该封象的数据组员复制,台另壹种封象,而不能将该封象中指针所指向

的内存单元也复制谩去。it样,就也言午出现同壹内存军元释放两次,导致程序运行出金普。

7.简述组员函数、全局函数和友元函数的差异。

解答耍黠:如下几黠必须清晰:

组员函数是在类内部定义的,作用域在类的内部,组员函数可以访冏类的数据组员

(公有、保护和私有数据组员),可以调用该类的其他组员函数(公有、保护和私有组

员函数),可以调用全局函数。假如友元函数是另壹种类的公有组员函数,则该类的组

员函数也只能通谩那俯I类的卦象调用,不能调用那他类的保护和私有组员函数。非本类

组员函数(其他类组员函数或全局函数)可以通谩该类的封象访冏该类的公有数据组员

和调用该类的的公有组员函数。

不是在类中定义的组员函数都是全局函数。

假如某壹种函数(全局函数或类的组员函数)定义卷另壹种类的友元函数,需要在

那用类中用friend关键字申明,友元函数并不是类的组员,它的定义自然是在那他类

的外面。

8.简述构造化的程序设计、面向封象的程序设计的基本思想。

解答要罢占:

构造化的程序设计将数据和封数据的操作分离,程序是由壹种体|的函数构成的,面向封

象的程序设计将数据和操作封装在壹起,程序是由壹种他1封象构成的,封象之间通遇接

口谨行通信,它可以很好地支持程序代码的复用。

9.构造struct和类class有什么异同?

解答要要占:

struct和class都可以定义类,不谩缺省访冏权限阐明畤,struct的组员是公有的,

而class的组员是私有的。在C++中,struct可被class替代。

程序阅II分析题

1、分析程序,写出程序的输出成果(7分)。

nulude<iosli

usingnamespacestd;

classClock(

private:

iniHour,Minute,Second:

public:

voidSetTime(intNewll=24,intNewM=24,intNewS=24)

{Hour=Newll;Minule=NewM;Second=NewS:)

voidShowTimeO{cout«Hour«*:“<<Vinute<<":"<<Sccond〈〈endl;}

):

voidmain()

{cout«vtimesetandoutput:"«endl;

ClockM/Clock:

MyClockSetTimeO;

MyClock.ShowTimeO;

MyClockSelTime(8,30,30):

MyClockShowTimeO;

)

输出成果:

timesetandoutput:

24:24:24

8:30:30

2、分析程序,写出程序的输出成果(7分)。

#include<iostream〉

usingnamespacestd;

classpoint(

private:

intx,y;

pubic:

point(intxx=0,intyy=O){x=xx;y=yy;coul<〈”构造函数被调用"<<endl;}

point(point&p);

intGetXO(returnx;}

intGetYO(returny;}

};

point::point(point&p)

{x=p.x;

y=p.y;

cou<U拷贝构造函数被调用"<<endl;

)

voidmain()

{po-ntA(4,5);

pointB(A);

coui«B.GetX0«endl;

}

输dl成果:

构宜函数被调用

拷贝构造函数被调用

4

3.在括号中注释封应的^句(8分)

#include<iostream>

usingnamespacestd:

〃有助态栈区的slack类

classstack{

intstacksize:

long+buffcr;

long+sp;

public:

stack(intsize)//(1)

{stacksize=size;

sp=buffer=newlong[size]:

}

"stack()//(2)

{deletebuffer;}//(3)

voidpushdong);

longpop();

};

voidstack::push(longdata)

{ifIsp>=buffer+stacksize)

coui«”overflcw!\n”;

else{*sp=data;

sp+-;

)}

longstack::pop()

{if(sp<=buffer)

(cout«*stackisempiy!\n”;return0;}

elsereturn(*-sp);

)

voidmain()

(stack*pa=newstack(lO);//(4)

pa->push(351);//(5)

pa->push(7075461);

cout«endl;

coul<<pa->pop()«wispopped.\n*;

deletepa;

)

(1)

(2)

(3)

(4)

(5)

4.^在如下两题中任选壹题,该题得分即卷本小题得分。如两题都答,则取两题得分

之平均值卷本小题得分。

(1)程序:

力include<iostream>

^include<string>

usingnamespacestd;

classBase

{private:

charmsg[30];

protected:

inin;

public:

Base(chars[],intm=0):n(m)

{strcpy(msg,s):

}

voidoutput(void)

icout«n<<endl«msg<<endl;

)

};

classDerivedl:publicBase

I

private:

intn;

public:

Derivedl(intm=l):

Base("Base”,m-1)

{n=m;}

voidoutput(void)

{cout«n«endl;

Base::output0:

}

};

classDerived2:publicDerivedl

(

private:

intn;

pubic:

Derived2(intm=2):

Derivedl(m-1)

{n=m;}

voidoutput(void)

{cout«n«endl;

Derivedl::output():

}

};

intmainO

{

BaseB("BaseClass*,1);

Derived2D;

B.output0;

D.output0;

)

运行成果:

1

BaseClass

2

1

0

Base

(2)程序:

★include<iostream>

usingnamespacestd;

classSamp

{pub!ic:

voidSetij(inta,inib){i=a,j=b;}

〜Samp()

{cout<<zDestroying..,z«i«end]:

)

intGetMuti(){returni*j;}

protected:

inti;

intj;

);

intmain()

(

Samp*p;

p=newSamp[5];

if(!p)

cout«z,Allocationerror\n*;

return1;

for(intj=0;j<5;j++)

p[j].Setij(j,j);

for(intk=0;k<5;k++)

cout«wMuti[,,«k«,/]is:"

«p[k].GetMuti()«endl;

delete[]p;

return0;

)

运行成果:

Muti[0]is:0

Muti[1]is:1

Muti[2]is:4

Muti[3]is:9

Muti[4]is:16

Destroying..4

Destroying..3

Destroying..2

Destroying..1

Destroying..0

5.比青在如下两题中任选壹题,该题得分即卷本小题得分。如两题都答,则

取两题得分之平均值卷本小题得分。

(1)程序:

#include<iostrcam>

usingnamespacestd;

classVector

(

public:

Vector(ints=100);

int&Elem(intndx);

voidDisplay(void);

voidSet(void);

"Vector(void);

protected:

intsize;

int"buffer;

};

Vector::Vector(ints)

(

buffer=newint[size=s];

}

int&Vector::Elem(intndx)

(

if(ndx<0|ndx>=size)

(

cout«/zerrorinindexw«endl;

exit(1);

)

returnbuffer[ndx];

)

voidVector::Display(void)

(

for(intj=0;j<size;j++)

cout«Elem(j)«endl;

)

voidVector::Set(void)

(

for(intj=0;j<size;j++)

Elem(j)=j+1:

}

Vector::^Vector(void)

delete口buffer;

)

intmainO

(

Vectora(10);

Vectorb(a);

a.Set();

b.Display();

)

运行成果:

1

2

3

4

5

6

7

8

9

10

最终出拿音误信息,原因是:申明封象b是谨行的是浅拷贝,b与a共用

同壹种buffer,程序结束前调用析构函数畴封同壹内存区暹行了两次释

放。

6.阅^下面程序,写出输出成果。

itinclude<iostream>

usingnamespacestd;

classCPosition

(

public:

CPosition(intiPosilionX=0,intiPositionY=0):m_iPosilionX(iPositionX)

(

m_iPositionY=iPositionY;

}

intGetPositionXOconst

{

returnm_iPositionX;

)

intGetPositionYOconst

returnm_iPositionY:

)

voidSetPositionX(intiPositionX)

{

m_iPositionX=iPositionX:

}

voidSetPositionY(intiPositionY)

miPositionY=iPositionY;

1

private:

intmiPositionX;//X坐襟

intm_iPositionY;//X坐楝

);

intmain(void)

I

CPositionoPostionl;

constCPositionoPostion216,8);

cout<<oPostionl.GetPositionX()<<endl;

oPostionl.SetPositionX(16^;

cout«oPostionl.GetPositionX()«endl;

oPostionl.SetPositionY(18';

cout«oPostionl.GetPositionY()«endl;

cout«oPostion2.GetPositionX()«endl;

cout«oPostion2.GetPositionY()«endl:

return0;

)输出成果卷:

0

16

18

6

8

7.阅^下面程序,写出输出成果。

fiinclude<iostream>

usingnamespacestd;

template<classType>

classCTest

public:

CTest(TypemtArrayf],in:iSize):mpArray(mtArray)

{

m_iSize=iSize;

)

voidPrintOconst

|

for(inti=0;i<miSize;i++)

I

cout«m_pArray[i]«*:

)

}

private:

Type*mpArray;

intm_iSize:

);

intmain(void)

(

inta[]={1,0,8};

doubleb[]=(1.6,1.8};

CTest<int>oTestKa,3):

oTestl.Print():

CTest<double>oTcst2(b,szcof(b)/sizcof(double));

oTest2.PrintO:

cout«endl;

return0;

)

上面程序的输出成果检:

1081.61.8

8.阅^下面程序,写出输出成果。

8include<iostream>

usingnamespacestd;

classCGoods

I

public:

CGoods(intiWeight)

{

miWeight=iWeight;

m_iTotalWeight=m_i!otalWeight+iWeight;

)

CGoods(constCGoods&oGood)

{

miWeight=oGood.miWeight;

m_iTotalWeight=m_ilotaIWeight+m_iWeight;

1

'CGoods()

{

m_iTotalWeight=m_i!otalWeight-m_iWeight;

)

voidPrint0const:

staticintGetTotalWeightD

{

returnm_iTotalWeight;

1

private:

intm_iWeight;

staticintm_iTotalWeight

);

intCGoods;:iu_iTotalWeight=8;//初始化静志数据组员

voidCGoods::Print()const

(

cout«this->m_iWeight«”"«this->m_iTotalWeight«

)

intmain(void)

(

CGoodsoGood1(6);

oGood1.Print();

CGoodsoGood2(oGood1):

oGood2.Print();

cout«CGoods::GetTotalWeight();

cout«endl:

return0:

)

上面程序的输出成果卷:

61462020

9.阅^下面程序,写出输出成果。

ttinclude<iostream>

usingnamespacesld;

template<classType>

classCTest

public:

CTeslfTypetA=0,TypeIB=0,TypetC=0):m_tC(lC)

(

m_tA=tA:

m_tB=tB:

}

voidPrint0

{

cout«mtA«cndl;

cout«m_tB«endl;

)

voidPrint()const

{

cout«m_tC«endl;

}

private:

Typem_tA,m_tB:

constTypemtC:

);

intmain(void)

(

CTest<float>oTestl:

oTestl.Print();

CTest<int>oTest2(l,9,6:;

oTest2.Print0:

constCTest<double>oTest3(0,6,1.8):

oTest3.Print();

cout«endl:

return0;

)

上面程序的输出成果悬:

0

0

1

9

1.8

10.程序分析题(本大题共5小题,每题4分,共20分)给出下面各程序

的输出成果。

1.若有如下程序:

#include<iostream>

usingnamespacestd;

classA

(

inta;

public:

A(intaa=0){a=aa:)

){cout«^DestructorA!”<<a«endl;)

);

classB:publicA

(

intb;

public:

B(intaa=0,intbb=0)A(aa){b=bb:}

~B()(cout«""DestructorB!*«b«endl;)

);

intmain()

(

Bx(5),y(6,7):

return0:

)

上面程序的输出成果卷:

DestructorB!7

DestructorA!6

DestructorB!0

DestructorA!5

2.若有如下程序:

升include<iostream>

usin*namespacestd:

classPoint

(

intx,y;

public:

Point0(x=0:y=0:}

voidSetPoint(intxl,intyl){x=xl;y=yl;}

voidDisPointO{cout«"x="«x"«"y="«y«endl;}

);

intmain()

I

Point*p=newPoint;

p->SetPoint(5,12);

p->DisPoint0;

deletep;

return0;

)

上面程序的输出成果悬:

x=5,y=1

温馨提示

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

评论

0/150

提交评论