版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
选择题
1.在C++中,函数原型不能襟识(D)
A.函数的返回类型B.函数参数的保I数C.函数参数类型D.函数的功能
2.在C++程序中,封象之间的互相通信通谩(B)
A.继承实琪B.调用组员函数实现C.封装实垣D.函数重载实现
3.封于任意壹种类,析构函数的值I数最多卷(B)
A.0B.1C.2D.3
4.友元关系不能(A)
A.继承B.是类与类的关系C.是壹种类的组员函数与另壹种类的关系D.提高程序
的运行效率
5.吉吾句ofstreamf("SALARY.DAT/Z,ios::appIios::binary)的功能是建立流
封象f,试图打^文献SALARY.DAT并与之连接,并且(A)
A.若文献存在,将文献写指针定位于文献尾;若文献不存在,建立壹种新文献
B.若文献存在,将其置卷空文献;若文献不存在,打失败
C.若文献存在,将文献写韦针定位于文献首;若文献不存在,建立壹种新文献
D.若文献存在,打^失败;若文献不存在,建立壹种新文献
6.下面^法封的的是(B)
A.内联函数在运行畤是将该函数的目的代码插入每佃调用该函数的地方
B.内联函数在编译畤是将该函数的目的代码插入每低调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通谩加关键字inline定义
7.可以用p.a的形式访冏派生类封象p的基类组员a,其中a是(D)
A.私有继承的公有组员
B.公有继承的私有组员
C.公有继承的保护组员
D.公有继承的公有组员
8.在公有派生状况下,有关派生类射象和基类量寸象的关系,不卦的的论述是(C)
A.派生类的卦象可以赋给基类的封象
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.在派生类中重新定义虚函数H寺必须在(A)方面与基类保持壹致。
A.参数类型R.参数名字C.操作内容D.赋值
15.下面有关C++中类的继承与派生的法金音误的是(C)。
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.壹种类模板可以用来实例化多种模板类
0.类模板可以有多种参数
20.要使壹种类成卷抽象类,造彳固类应具有的条件是(A)
A.至少有壹种纯虚函数
R.至少rr壹种虚函数
C.只具有壹种纯虚函数
D.只具有壹种虚函数
21.有关运算符重载封的的描述是(D)
A.C++gg言容^在重载运算符畤变化运算符的操作值1数
B.C++BS言容宗午在重载运算符畤变化运算符的优先级
C.C++言吾言容^在重载运算符畤变化运算符的结合性
D.C++言吾言容^在重载运算符H与变化运算符的本来的功能
22.下列^法封的的是(D)。
A.堂种类的封象可以是另壹种类的组员
B.壹种类可以作卷另壹种类的派生类
C.壹种类可以在另壹种类定义体暹行定义
D.以上^法均封的
23.下列各类函数中,(C)不是类的组员函数。
A.构造函数B.析陶函数C.友元函数D.拷贝构造函数
24.派生类的封象封它的基类组员中(A)是可以访冏的。
A.公有继承的公有组员
B.公有继承的私有组员
C.公有继承的保护组员
D.私有继承的公有组员
25.下面有关构造函数和new运算符关系封的的^法是(D)
A.new运算符不调用构造函数
B.构造函数壹定调用naw运算符
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.公有继承H寺基类中的protected组员在派生类中仍是protected的
D.私有继承畴基类中的pnblic组员在派生类中是privata的
30.拷贝构造函数的参数是(C)
A.某假I封象名B.某佰I封象的组员名C.某低I封象的引用名D.某(0封象的
指针名
31.下列有关构造函数的描述中,金昔误的是(D)
A.构造函数可以设置默认参数
B.构造函数在定义类封象畤自勃执行
C.构造函数可以是内联函数
D.构造函数不可以重载
32.数组作卷函数的形参畤,把数组名作卷实参,传递给函数的是(A)
A.该数组的首地址
B.该数组的元素f0数
C.该数组中的各元素值
D.该数组的大小
33.通谩壹种析构函数调用虚函数畤,C++系统封该调用采用(B)。
A.勤态联编B.静态联编C.不确定是哪种联编D.函数重载
34.下面有关重载函数的信兑法中封的的是(C)
A.重载函数必须具有不壹样的返回值类型;
B.重载函数形参他数必须;
C.重载函数必须有不壹样的形参列表;
D.重载函数名可以不壹样:
35.使用string类建立封象的不封的方式是(D)o
A.string*tr("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.阐明内联函数的关键字是()。
A.inlineR.virtualC.dpfinpD.static
41.假定CAb卷壹种类,则执行CAboX;言吾句畤将自勤调用该类的()
A.有参构造函数B.辗参构造函数
C.拷贝构造函数D.赋值重载函数
42.cin是某简]类的原则封象的引用,该类是()o
A.ostreamB.istreamC.stdoutD.stdin
43.下面的哪他保留字不能作卷函数的返回类型?()
A.voidB.intC.nowD.long
44.不能参与重载的运算符是()。
A.类B.函数C.函数模板D.运算符
45.由于数据隐藏的需要,静态数据组员壹般被阐明卷)o
A.私有的B.公有的C.保护的D.不可访造I的
46.编译畤多态性使用什么获得?()
A.重载函数B.继承C.虚函数D.B和C
47.拷贝构造函数的参数壹般是()。
A.瓢特殊规定B.指向娄f象的指针
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)重载函数形参他数必须不壹样
0重载函数必须具有不壹样的形参列表
D)重载函数名可以不宜样
53.已知:print()函数是壹种类的常组员函数,它瓢返回值,下列表达中,
封的的是(A)o
A)voidprint()cons:;B)constvoidprint();
C)voidconstprint();D)voidprint(const)
54.假定Myclass•^堂种类,那么下列的函数阐明中(D)卷该类的析
构函数。
A)void〜Myclass();B)〜Myclass(intn);
C)Myclass();D)〜Myclass()
55.下面类的定义中有(C)处余昔误。
classmyclass{inti=0;public:voidmyclass();
'myclass(value);}
A)1B)203D)4
56.阐明虚函数的关键字是(B)o
A.inlineB.virtualC.defineD.static
57.cout是某低I类的原则封象的引用,该类是(A)o
A.ostreamB.istreamC.stdoutD.stdin
58、壹种类的所有卦象共享的是(D)o
A.私有数据组员B.公有数据组员
C.保护数据组员D.静态数据组员
59.静态组员函数没有(B)o
A.返回值B.this指针C.指针参数D.返回类型
60.有关C++与言关系的描述中,(D)是籍误的。
A.C^言是C++^言的壹种子集
B.C言吾言与C++三吾言是兼容的
c.C++BM言封c^言暹行了某些改善
D.C+十言吾言和C言吾言都是面向封象的
61.按照檄识符的规定,(A)符号不能构成檄识符。
A.连接符B.下划线
C.大小写字母D.数字字符
62.悬了防止嵌套的if-else言吾句的二义性,C言吾言规定else余恩是与(C)构
成配封关系。
A.缩排位置相似的irR.在其之前未配封的if
C.在其之前未配封的近来的ifD.同壹行上的if
63.在〃intA[][3]={⑴,{3,2},{4,5,6},{0}};〃中,A[2][2]的值是(C)。
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是壹种指向数组的指针,所指向的数组是5他Iint型元素
B.pa是直种指向某数组占第5倜元素的指针,该元素是int型变量
C.pa[5]表达某佰|元素的第5他元素的值
D.pa是壹种具有510元素的指针数组,每{0元素是壹种int型指针
66.在下列表达引用的措施中,(A)是卦的的。
已知:intm=10;
A.int&x二in;B.int&y=10;
C.int&z;D.floAt
67.下列for循环的次数^(B)o
for(i=0,x=0;!x&&i<=5;i++)
A.5B.6C.1D.辗限
68.封于C/C++gg言的函数,下列论述中封的的是(A).
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()的参数
n.变量A与A按位与作卷函数Sei()的参数
73.已知:print。函数是壹种类的常组员函数,它辗返回值,下列表达中,(A)
是封的的。
A.voidprint()const;B.constvoidprint();
C.voidconstprint():D.voidprint(const);
74.有关虚函数的描述中,(C)是封的的。
A.虚函数是壹种static类型的组员函数
B.虚函数是壹种非组员函数
C.基类中阐明了虚函数彳爰,派生类中将其封应的函数可不必阐明卷虚函数
D.派生类的虚函数与基类的虚函数具有不宜样的参数保|数和类型
75.有关new运算符的下列描述中,(D)是金昔的。
A.它可以用来勤态创立封象和封象数组
&使用它创立的封象和封象数组可以使用运算符Delete删除
。.使用它创立封象的要调用构造函数
D.使用它创立封象数组畤必须指定初始值
76.若有定义inta=3,*p=&a;贝lj*p的值是(B)
A)常量a的地址值B)3
C)变量p的地址值D)辗意义
77.在下列有关C++与言关系的各描述中,(D)是金昔误的。
A)C者吾言是C++的壹种子集;B)C^言与C++是兼容的;
C)C++封小吾言谨行了某些改善;D)C++和言都是面向封象的。
78.在下列有关类概念的各描述中,(A)是名昔误的。
A)类就是CIS言中的构造体类型:
B)类是具有共同行卷的若干封象的统宣描述体;
C)类是创立卦象的样板;
D)类是抽象数据类型的实垸。
79.采用函数重载的目的在于(D)
A)实现共享B)减少空间
C)提高速度D)使用以便,提高可^性
80.下列的各类函数中,(C)不是类的组员函数。
A)构造函数B)析构函数
C)友元函数D)拷贝初始化构造函数
81.下列静态数据组员特性中,(D)是金昔误的。
A)阐明静态数据组员畴前边要加修饰符static;
B)静态数据组员要在类体外暹行初始化;
C)引用静态数据组员时,要在静态数据组员名前加〈类名〉和作用域辨别符;
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++支持的两种多态性分别是编译畤的(操作重载)(静态)多态性和运行H寺的
(虚函数)(勤态)多态性。
6.C++中言吾句constchar*constp="hello";所定义的指针p和它所指的内
容都不能被(变化(重新赋值))。
7.假定AB卷壹种类,则^句AB(AB&x);卷该类(捷贝)构造函数的原型阐明。
8.将关键字const写在组员函数的(函数居0和(函数体)之间畤,所修饰的
是this指针。
9.在C++中,访冏壹种封象的组员所用的运算符是(・),访冏壹种指针所指向的
封象的组员所用的运算符是(->)。
10.派生类彳足壹种或多种此前定义的该类的(基类)。
11.运算符重载峙,其函数名由(operator运算符)构成。组员函数重载双
目运算符畤,左操作数是(目前封象),右操作数是(函数形参)。
12.C++支持面向封象程序设计的四10要素是:(封装性)、(继承性)、(抽象性)
利(多态性)。O
13.模板分卷(类)模板和(函数)模板。
14.定义内联函数所用的关键字(inline),定义友元所用的关键字卷(friend)。
15.常壹种派生类具有多种基类畤,造种继承方式称卷(多重继承)。
16.通谩壹种构造函数调用虚函数畤,C++系统封该调用采用(静态)联编。
17.任何类中容言午有(private)、(public)、(protected)三种访R3控制类型的
组员,数据组员和组员函数的默认类型卷(private)o
18.只有在(公有)继承的状况下,基类和派生类之间才有赋值兼容性规则。
19.运算符重载使用的两种方式是(组员函数)和(友元函数)。
20.组员名限定的符号是(::),它可以在引用组员畤防止(二义性)。
21.在用class定义壹种类畤,数据组员和组员函数的默认访冏权限是
(privated)。
22.已知intDBL(intn){returnn+n;}和longDBL(longn){returnn+n;}是
壹种函数模板的两他I实例,则该函数模板的定义是(template〈classT>TDBL(T
n;{returnn+n;})。(规定写出函数模板的完整定义)
23.静态数据组员必须在(类外)谨行初始化。
24.具有纯虚函数的类称悬(抽象类)。
25.若Queue是壹种类,aQueuc是它的壹种封象,并且该类中定义了壹种静态
组员函数show()则在类外封该组员的函数选行调用的方式可认卷
(aQueue.show())和(Queue::show())©
26.定义内联函数所用的关键字卷(inline),定义友元所用的关键字卷
(friend)。
27.使用组员函数重载运算符畤,若运算符是二元的,则参数表中有(1)他操作
数,此畤(目前封象)作卷此运算符的左操作数。
28、C++程序中,刿象的初始化和清理工作,分别由两他特殊的组员函数(构造
函数)和(析构函数)来完毕。
29、在C++中,分别用(变量)与(函数)来体垣某种事物的所具有的属性和行
苒并且将它凭封装在壹起,形成壹种抽象数据类型一一(类】
30、常用壹种封象初始化另壹种新的同类封象,将调用(),其特殊之处在于:
形参是()。
31、模板是C++支持参数化的工具,我出?壹般用类模板和函数模板,it些只是面
向卦象的()性的壹种方面。
32、假如在某倜类定义中用关键字()申明了壹种外部函数(也言午是其他类的壹
种组员)彳发,造他外部函数就可以例外的访冏该类的任何组员,道低1外部函数称
卷类的()函数。
33、可以将类的组员申明卷static,使其成卷()。迨样的组员在编译畤被创立,
其实例只有壹种,悬所有该类的封象()。
34、()是勤态勤态联编的基础。它是非静态的组员函数,通谩()之彳及,在类
族中可以实现运行谩程中的多态。
35、程序中有如下言吾句:
inta=30;intb=a++;intc=++a;贝ijb=(),c=()
数组A[20][20]中,第壹种元素是(),最终壹种元素是()
36、申明壹种int型指针,清悬其勤态分派含10倜元素的地址空间:()。
37.在类中必须申明组员函数的(原型),组员函数的(实垣)部分可以写在类
外。
38.假如需要在被调函数运行期间,变化主调函数中实参变量的值,则函数的形
参应常是(引用)类型或(指针)类型。
39.(抽象)类只能作悬基类使用,而不能申明它的封象。
40.暹行函数重载畤,被重载的同名函数假如都没有用const修饰,则它优的形
参(他1数)或(类型)必须不壹样。
41.通谩壹种(常)封象只能调用它的常组员函数,不能调用其他组员函数。
42.函数的递归调用是指函数直接或间接地调用(H身)。
43.拷贝构造函数的形参必须是(本类封象的引用)。
44.设函数max是由函数模板实现的,并且max(3.5,5)和max(3,5)都是封的
的函数调用,则此函数模板具有(2)倜类型参数。
45.在C++中,函数重载与虚函数协助实琪了类的(多态)性。
46.由static修饰的数据组员卷该类的所有封象(共享)。
47.重载函数在参数类型或参数值I数上不壹样,但(函数名)相似。
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数或参数类型(不
宣样);在基类和派生类中,组员函数的覆盖是指(派生类组员函数与在基类被
覆盖的组员函数名、参数(0数、参数类型和返回值类型均相似)。
65.构造函数与析构函数除功能不壹样外,在定义形式上,它便1的区别遢包括
构造函数名与类名相似,而析构函数名是在类名前加壹种工(析构函数没有参
数)、(析构函数可以定义卷虚函数)。
66.勤态联编要满足两条件,它优是(被调用的组员函数是虚函数)、(用指
针或引用调用虚函数)。
67,在C++类中,有壹种不能定义卦象的类,追样的类只能被继承,称之卷(抽
象类),定义该类至少具有壹种(纯虚函数)。
68.在C++类中,const关键字可以修饰封象和组员函数,const封象不能(被
修改),const组员函数不能(修改类数据组员)。
69.C++中没有字符串类型,字符串是通谩(字符数组)来表达的,每壹种字符
串均有登种结尾字符(\0)。
70.C++中没有输入输出^句,输入输出是通谩(输入输出库)实现的,写出
壹条打印整型变量n的输出^句:(cout«n;)。
71.举出C++中两种代码复用的方式:(继承)、(重裁)。
判断正误题
(判断正误,在题彳奏的括号内,封的的划上金昔误的划上“X”。)
1.不可以定义抽象类的封象。
2.内联函数的定义必须出目前第壹次调用内联函数之前。
(V)
3.模板函数与函数模板的意义完全相似。
(X)
4.只有常组员函数才可以操作常封象。
(V)
5.引用可以不初始化。(X)
6.构造函数可以设置默认参数
(.J)
7.类的析构函数的作用是封象的初始化
(X)
8.cout的默认输出卦象是键盘,cin的默认输入封象是屏幕
(X)
9.抽象类可以用来直接创立封象。
(X)
10.常封象可以调用任意组员函数。
(X)
简答题
1、虚析构函数有什么作用?
解答要钻:
封象销毁畤,需要调用析构函数。在多态调用畤,是用基类的指针访冏派生
类的封象。假如析构函数是非虚函数,则基类指针只能访冏基类的析构函数,而
不能访冏派生类的析构函数,导致派生类封象销毁峙,没有调用派生类的析构函
数,只是调用了基类的析构函数。假如把析构函数定义成虚函数,则可克服迨倜
雕I。
2、拷贝构造函数在哪几种状况下调用?
解答要黠:
用壹种封象初始化另壹种封象畤
常用封象作^函数参数传递畤
堂函数返回封象畤
3、函数重载与函数覆盖有什么不壹样,它倬号与多态有什么关系?
解答要黠:
函数重载是指函数名相似,而函数的参数他数或类型不壹样;覆盖是指在派
生类中组员函数与基类组员函数的函数名、参数(0数、类型与返回值均相似:C++
中正是通谩虚函数的覆盖,实现多态的功能。
4、C++继承是怎样工作的?
答:继承使得派生类可以使用基类的公有和保护组员,彳他而实3M代码的复用,
派生类可以增艮组员,也可以隐臧和覆盖基类的组员。封于公有继承,基类组员
的访冏权限在派生类保持不变。
5、类与封象有什么区别?
答:类是类型,是封象的抽象,封象是类的详细实例。壹种类可以有多种封
象,每彳固封象均有自己的存储单元,而类不占存储单元。
6.若程序员没有定义擀贝构造函数,则编译器自勤生成壹种缺省的拷贝构造函
数,它也^^产生什么冏题?
解答要黠:’常封象具有指针数据组员,并用它初始化同类型的另壹种封象畤,缺
省的拷贝构造函数只能将该封象的数据组员复制名台另壹种封象,而不能将该刿象
中指针所指向的内存单元也复制谩去。it样,就也^出琨同壹内存罩元释放两次,
导致程序运行出金第
7.简述组员函数、全局函数和友元函数的差异。
解答要钻:如下几黠必须^清晰:
组员函数是在类内部定义的,作用域在类的内部,组员函数可以访冏类的数
据组员(公有、保护和私有数据组员),可以调用该类的其他组员函数(公有、
保护和私有组员函数),可■以调用全局函数。假如友元函数是另壹种类的公有组
员函数,则该类的组员函数也只能通谩那倜类的封象调用,不能调用那你I类的保
护和私有组员函数。非本类组员函数(其他类组员函数或全局函数)可以通谩该
类的封象访冏该类的公有数据组员和调用该类的的公有组员函数。
不是在类中定义的组员函数都是全局函数。
假如某壹种函数(全局函数或类的组员函数)定义卷另壹种类的友元函数,
需要在那倜类中用friend关键字申明,友元函数并不是类的组员,它的定义自
然是在那他类的外面。
8.简述构造化的程序设计、面向封象的程序设计的基本思想。
解答要黠:
构造化的程序设计将数据和封数据的操作分离,程序是由壹种值I的函数构成的,
面向封象的程序设计将数据和操作封装在壹起,程序是由壹种封象构成的,封
象之间通谩接口暹行通信,它可以很好地支持程序代码的复用。
9.构造struct和类class有什么异同?
解答要黠:
struct和class都可以定义类,不谩缺省访冏权限阐明畤,struct的组员是公
有的,而class的组员是私有的。在C++中,struct可被class替代。
程序阅分析题
1、分析程序,写出程序的输出成果(7分)。
ttinclude<iostream>
usingnamespacestd;
classClock{
private:
intHour,Minute,Second;
puolic:
voidSetTime(intNewH=24,intNewM=24,intNewS=24)
(Hour=NewH:Minute=NewM:Second=NewS:)
voidShowTimeO{cout«Hour«*:A,«Minute«w:/,«Second«endl;}
};
voidmainO
{cout«~timesetandoutput:w«endl;
ClockMyClock:
MyClock.SetTimeO:
MyClock.ShowTimeO;
MyClock.SetTime(8,30,30):
MyCluuk.SliuwTiuie0.
)
输出成果:
timesetandoutput:
24:24:24
8:30:30
2、分析程序,写出程序的输出成果(7分)。
ttinclude<iostream>
usingnamespacestd;
classpoint{
private:
intx,y;
public:
point(intxx-0,intyy=O){x=xx;尸yy;cout<〈”构造函数被调用"<<endl;
point(point&p);
intGetX(){returnx:)
intGetY()(returny;}
):
point::point(point&p)
(x=p.x;
y=p-y;
coui«"拷贝构造函数被调用"Gendl
)
voidmain()
{pointA(4,5):
pointB(A):
cout«B.GetX0«endl:
1
输出成果:
构造函数被调用
拷贝构造函数被调用
4
3.在括号中注释封应的^句(8分)
★include<iostream>
usingnamespacestd;
//有勃态栈区的slack类
classstacki.
intstacksize;
long"buffer;
long*sp;
public:
stack(intsize)//(1)
{stacksize=sizc;
sp=buffer=newlongtsize];
)
'stack0//(2)
{deletebuffer:}//(3)
voidpush(long);
longpop():
);
voidstack::push(longdata)
{if(Gp>-buffci-+stackGizc)
cout«^ovcrflow!\n~;
else{*sp=data:
sp++;
longstack::pop()
{if(sp<=buffcr)
{cout«*stackisempty!\n";return0:}
elsereturn(*-sp);
}
voidmain()
(stack*pa=ncwstack(10);//(4)
pa->push(351);//(5)
pa->push(7075461);
cojt«endl;
cojl«pa->pop()«,xispopped.\n”;
deletepa;
)
(1)
(2)
⑶
(1)
(5)
4.^在如下两题中任选壹题,该题得分即卷本小题得分。如两题都答,则取而
题得分之平均值卷本小题得分。
(1)程序:
Hiiclude<iostream>
Uiiclude<string>
usingnamespacestd;
classBase
{private:
cliaiuibg[30],
protected:
intn;
puolic:
Base(chars[],intm=0):n(m)
{strcpy(msg,s);
}
voidoutput(void)
{cout«n<<endl«msg<<endl;
)
):
c1assDerived1:pub1icBase
(
private:
intn;
public:
Derived】(inim=l):
Base("Base”,m-1)
{n=m:}
voidoutput(void)
(cout«n«cndl;
Base::output0;
)
};
classDerived2:publicDerivedl
(
private:
intn:
public:
Derived2(intm=2):
Derivedl(m-1)
(n=m:)
voidoutput(void)
{cout«n«cndl;
Derived!::output0:
)
);
intmain()
(
BaseBCBaseClass”,1);
Derived2D;
B.output():
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=12
3.若有如下程序:
#include<iostream>
usingnamespacestd;
classBase
(
public:
voidFunO{cout<<"1"«endl;}
):
classDerived:pub1icBase
(
public:
voidFun(){cout«"2"«endl;}
);
intmain()
(
Deriveda;
Base*p;
P=&a:
p->Fun();
a.Fun();
return0;
)
上面程序的输出成果悬:
1
2
4.阅^下面程序,写出输出成果。
^include<iostream>
usingnamespacestd;
classPoint
(
public:
Point(intx=0,inty=0):m_x(x),m_y(y){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全过程食安质量管理优化路径与方法的研究报告
- 关于未来电力系统中独立储能技术的战略规划报告
- 医院行政查房制度及实施细则
- 高层住宅楼建设方案及综合安全保障措施
- 新能源车辆推广与充电设施建设规划
- 高校思想政治教育创新模式研究
- 中国移动面试攻略及真实案例
- 个人时间管理:如何高效利用时间
- 教学管理中的学生评价系统优化
- 体育产业中的数字化营销与运营策略
- 文学常识1000题含答案
- 河南省房屋建筑和市政工程施工安全风险隐患双重预防体系建设实施细则
- 2025水利工程生态产品价值核算技术规范
- 2025年 四川德阳三星堆开发建设有限公司招聘考试笔试试卷附答案
- 正念冥想培训课件
- 中石油组织管理制度
- 人教版七年级道法下册 第一单元第二课 做情绪情感的主人(上课、学习课件)
- 2025年世界防治结核病日知识竞赛考试题库300题(含答案)
- 外墙开裂及渗水维修方案
- 酒店财务知识培训课件
- 2025年包头轻工职业技术学院单招职业技能测试题库a4版
评论
0/150
提交评论