版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
选择题
1.在C++中,函数原型不能标识(D)
A.函数的返回类型B.函数参数的个数C,函数参数类型D.函数的功能
2.在C++程序中,对象之间的互相通信通过(B)
A.继承实现B.调用组员函数实现C.封装实现D.函数重载实现
3.对于任意一种类,析构函数的个数最多为(B)
4.友元关系不能(A)
A.继承B,是类与类的关系C.是一种类的组员函数与另一种类的关系D.提高程序的运行效率
5.语句ofstreamf("",ios::appIios::binary);的功能是建立流对象f,试图打开文献并
与之连接,并且(A)
A.若文献存在,将文献写指针定位于文献尾;若文献不存在,建立一种新文献
B.若文献存在,将其置为空文献;若文献不存在,打开失败
C.若文献存在,将文献写指针定位于文献首;若文献不存在,建立一种新文献
D.若文献存在,打开失败;若文献不存在,建立一种新文献
6.下面说法对的的是(B)
A.内联函数在运行时是将该函数的目的代码插入每个调用该函数的地方
B.内联函数在编译时是将该函数的目的代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
D.类的内联函数必须在类体外通过加关键字inline定义
7.可以用的形式访问派生类对象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的友元,贝
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)o
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.要使一种类成为抽象类,这个类应具有的条件是(A)
A.至少有一种纯虚函数
B.至少有一种虚函数
C.只具有一种纯虚函数
D.只具有一种虚函数
21.有关运算符重载对的的描述是(D)
A.C++语言容许在重载运算符时变化运算符的操作个数
B.C++语言容许在重载运算符时变化运算符的优先级
C.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组员在派生类中仍是pubIic的
B.公有继承是基类中的private组员在派生类中仍是private的
39.下面论述对的的是(D)
A.基类的保护组员在派生类中仍然是保护的
B.基类的公有组员在派生类中仍然是公有的
C.基类的私有组员在派生类中是私有的
D.从基类派生时,可以有3种派生措施
40.阐明内联函数的关键字是()o
A.inlineB.virtuaIC.defineD.static
41.假定CAb为一种类,则执行CAboX;语句时将自动调用该类的()
A.有参构造函数B.无参构造函数
C.拷贝构造函数D,赋值重载函数
42.cin是某个类的原则对象的引用,该类是()o
A.ostreamB.istreamC.stdoutD.stdin
43.下面的哪个保留字不能作为函数的返回类型?()
A.voidB.intC.newD.Iong
44.不能参与重载的运算符是()o
A.类B.函数C,函数模板D.运算符
45.由于数据隐藏的需要,静态数据组员一般被阐明为()o
A.私有的B.公有的C.保护的D.不可访问的
46.编译时多态性使用什么获得?()
A.重载函数B.继承C.虚函数D.B和C
47.拷贝构造函数的参数一般是()。
A.无特殊规定B.指向对象的指针
C.自已类对象的常引用D.对象
48.C++有几种联编?()
A.1种B.2种C.3种D.4种
49.基类和派生类可以分别称为()o
A.“大类”和“小类”B.“父类”和“子类”
C.“小类”和“大类”D.“子类”和“父类”
50.下列对类的构造函数和析构函数描述对的的是(A)o
A)构造函数可以重载,析构函数不能重载
B)构造函数不能重载,析构函数可以重载
C)构造函数可以重载,析构函数可以重载
D)构造函数不能重载,析构函数不能重载
51.在函数定义前加上关键字“inline”,表达该函数被定义为(B)。
A)重载函数B)内联函数
C)组员函数D)一般函数
52.下面有关重载函数的阐明中,(C)是对的的。
A)重载函数必须具有不一样的返回值类型
B)重载函数形参个数必须不一样
C)重载函数必须具有不一样的形参列表
D)重载函数名可以不一样
53.已知:print()函数是一种类的常组员函数,它无返回值,下列表达中,对的的是
A)o
A)voidprint()const;B)constvoidprint();
C)voidconstprint();D)voidprint(const)
54.假定Myclass为一种类,那么下列的函数阐明中[D)为该类的析构函数。
A)void〜MycIass();B)〜MycIass(intn);
C)MycIass();D)〜Myclass()
55.下面类的定义中有(C)处错误。
cIassmycIass{inti=0;pubIic:voidmycIass();
~mycIass(vaIue);]
A)1B)2C)3D)4
56.阐明虚函数的关键字是(B)。
A.inlineB.virtuaIC.defineD.static
57.cout是某个类的原则对象的引用,该类是(A)o
A.ostreamB.istreamC.stdoutD.stdin
58、一种类的所有对象共享的是(D)o
A.私有数据组员B.公有数据组员
C.保护数据组员D.静态数据组员
59.静态组员函数没有(B)o
A.返回值B.this指针C.指针参数D.返回类型
60.有关C++与C语言关系的描述中,D)是错误的。
语言是C++语言的一种子集
语言与C++语言是兼容的
++语言对C语言进行了某些改善
++语言和C语言都是面向对象的
61.按照标识符的规定,(A)符号不能构成标识符。
A.连接符B.下划线
C.大小写字母D.数字字符
62.为了防止嵌套的if-else语句的二义性,C语言规定else总是与(C)构成配对关系。
A.缩排位置相似的ifB.在其之前未配对的if
C.在其之前未配对的近来的ifD.同一行上的if
63.在“intA[]⑶={{1},{3,2},{4,5,6},{0}};“中,A⑵⑵的值是(C)。
64.设“Char**s;",如下对的的体现式是(B)。
='Computer";B.*s="Computer";
C.**s="Computer";D.*s='C;
65.对于"int*pa[5];”的描述中,(D)是对的的。
是一种指向数组的指针,所指向的数组是5个int型元素
是一种指向某数组中第5个元素的指针,该元素是int型变量
[5]表达某个元素的第5个元素的值
是一种具有5个元素的指针数组,每个元素是一种int型指针
66.在下列表达引用的措施中,(A)是对的的。
已知:intm=10;
&x=m;&y=10;
&z;&t=&m;
67.下列for循环的次数为(B)o
for(i=0,x=0;!x&&i〈=5;i++)
D.无限
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&的含义是(CJo
A.指向类A的指针为A
B.将A的地址值赋给变量Set
是类A对象的引用,用来作函数Set()的参数
D.变量A与A按位与作为函数Set()的参数
73.已知:print()函数是一种类的常组员函数,它无返回值,下列表达中,(A)是对的的。
print()const;voidprint();
constprint();print(const);
74.有关虚函数的描述中,(C)是对的的。
A.虚函数是一种static类型的组员函数
B.虚函数是一种非组员函数
C.基类中阐明了虚函数后,派生类中将其对应的函数可不必阐明为虚函数
D.派生类的虚函数与基类的虚函数具有不一样的参数个数和类型
75.有关new运算符的下列描述中,(D)是错的。
A.它可以用来动态创立对象和对象数组
B.使用它创立的对象和对象数组可以使用运算符Delete删除
C.使用它创立对象时要调用构造函数
D.使用它创立对象数组时必须指定初始值
76.若有定义inta=3,*p=&a;则*p的值是(B)
A)常量a的地址值B)3
C)变量p的地址值D)无意义
77.在下列有关C++与C语言关系的各描述中,(D)是错误的。
A)C语言是C++的一种子集;B)C语言与C++是兼容的;
C)C++对C语言进行了某些改善;D)C++和C语言都是面向对象的。
78.在下列有关类概念的各描述中,(A)是错误的。
A)类就是C语言中的构造体类型;
B)类是具有共同行为的若干对象的统一描述体;
O类是创立对象的样板;
D)类是抽象数据类型的实现。
79.采用函数重载的目的在于(D)
A)实现共享B)减少空间
C)提高速度D)使用以便,提高可读性
80.下列的各类函数中,(C)不是类的组员函数。
A)构造函数B)析构函数
O友元函数D)拷贝初始化构造函数
81.下列静态数据组员特性中,(D)是错误的。
A)阐明静态数据组员时前边要加修饰符static;
B)静态数据组员要在类体外进行初始化;
C)引用静态数据组员时,要在静态数据组员名前加〈类名>和作用域辨别符;
D)静态数据组员不是所有对象共有的。
82.如下各选项中,对的的函数申明是(C)
A)doubIefunc(intx,inty)
B)intfunc(intx;inty);
C)fIoatfunc(intx,inty);
D)charfunc(intx,y);
填空题
1.定义类的动态对象数组时,系统只可以自动调用该类的(无参)构造函数对其进行初始化。
2.在C++程序设计中,建立继承关系倒挂的树应使用(单一)继承。
,
3.体现式cout«end1还可表达为(cout«\n')o
4.基类的公有组员在派生类中的访问权限由(访问控制)决定。
++支持的两种多态性分别是编译时的(操作重载)(静态)多态性和运行时的(虚函数)(动态)
多态性。
++中语句constchar*constp="hello";所定义的指针p和它所指的内容都不能被(变
化(重新赋值))。
7.假定AB为一种类,则语句AB(AB&x);为该类(拷贝)构造函数的原型阐明。
8.将关键字const写在组员函数的(函数头)和(函数体)之间时,所修饰的是this指针。
9.在C++中,访问一种对象的组员所用的运算符是(・),访问一种指针所指向的对象的组员所
用的运算符是(->)。
10.派生类从一种或多种此前定义的该类的(基类)。
11.运算符重载时,其函数名由(operator运算符)构成。组员函数重载双目运算符时,
左操作数是(目前对象),右操作数是(函数形参)。
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;}和IongDBL(Iongn){returnn+n;}是一种函数模板
的两个实例,则该函数模板的定义是(template<classT>TDBL(Tn){returnn+n;})o(规
定写出函数模板的完整定义)
23.静态数据组员必须在(类外)进行初始化。
24.具有纯虚函数的类称为(抽象类)。
25.若Queue是一种类,aQueue是它的一种对象,并且该类中定义了一种静态组员函数show()
则在类外对该组员的函数进行调用的方式可认为0)和(Queue::show())。
26.定义内联函数所用的关键字为(inline),定义友元所用的关键字为(friend)。
27.使用组员函数重载运算符时,若运算符是二元的,则参数表中有⑴个操作数,此时(目前
对象)作为此运算符的左操作数。
28、C++程序中,对象的初始化和清理工作,分别由两个特殊的组员函数(构造函数)和(析
构函数)来完毕。
29、在C++中,分别用(变量)与(函数)来体现某种事物的所具有的属性和行为,并且将它
们封装在一起,形成一种抽象数据类型——(类)。
30、当用一种对象初始化另一种新的同类对象,将调用(),其特殊之处在于:形参是()。
31、模板是C++支持参数化的工具,我们一般用类模板和函数模板,这些只是面向对象的()
性的一种方面。
32、假如在某个类定义中用关键字()申明了一种外部函数(也许是其他类的一种组员)后,
这个外部函数就可以例外的访问该类的任何组员,这个外部函数称为类的()函数。
33、可以将类的组员申明为static,使其成为()。这样的组员在编译时被创立,其实例只有
一种,为所有该类的对象()。
34、()是动态动态联编的基础。它是非静态的组员函数,通过()之后,在类族中可以实现
运行过程中的多态。
35、程序中有如下语句:
inta=30;intb=a++;intc=++a;则b=(),c=()
数组A[20][20]中,第一种元素是(),最终一种元素是()
36、申明一种int型指针,请为其动态分派含10个元素的地址空间:()o
37.在类中必须申明组员函数的(原型),组员函数的(实现)部分可以写在类外。
38.假如需要在被调函数运行期间,变化主调函数中实参变量的值,则函数的形参应当是(引
用)类型或(指针)类型。
39.(抽象)类只能作为基类使用,而不能申明它的对象。
40,进行函数重载时,被重载的同名函数假如都没有用const修饰,则它们的形参(个数)或
(类型)必须不一样。
41.通过一种(常)对象只能调用它的常组员函数,不能调用其他组员函数。
42.函数的递归调用是指函数直接或间接地调用(自身)。
43.拷贝构造函数的形参必须是(本类对象的引用)。
44.设函数max是由函数模板实现的,并且max,5)和max(3,5)都是对的的函数调用,则此
函数模板具有(2)个类型参数。
45.在C++中,函数重载与虚函数协助实现了类的(多态)性。
46.由static修饰的数据组员为该类的所有对象(共享)。
47.重载函数在参数类型或参数个数上不一样,但(函数名)相似。
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++中,定义重载函数时,应至少使重载函数的参数个数或参数类型(不一样);在基
类和派生类中,组员函数的覆盖是指(派生类组员函数与在基类被覆盖的组员函数名、参数个
数、参数类型和返回值类型均相似)。
65.构造函数与析构函数除功能不一样外,在定义形式上,它们的区别还包括构造函数名与
类名相似,而析构函数名是在类名前加一种,(析构函数没有参数)、(析构函数可以定义为虚
函数)。
66.动态联编要满足两个条件,它们是(被调用的组员函数是虚函数)、(用指针或引用调用
虚函数)。
67.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为(抽象类),定义
该类至少具有一种(纯虚函数)。
68.在C++类中,const关键字可以修饰对象和组员函数,const对象不能(被修改),const
组员函数不能(修改类数据组员)。
69.C++中没有字符串类型,字符串是通过(字符数组)来表达的,每一种字符串均有一种结
尾字符(\0)o
70.C++中没有输入输出语句,输入输出是通过(输入输出库)实现的,写出一条打印整型
变量n的输出语句:(cout«n;)o
71.举出C++中两种代码复用的方式:(继承)、(重载)。
判断正误题
(判断正误,在题后的括号内,对的的划上错误的划上"X"。)
1.不可以定义抽象类的对象。(v)
2.内联函数的定义必须出目前第一次调用内联函数之前。(V)
3.模板函数与函数模板的意义完全相似。(X)
4.只有常组员函数才可以操作常对象。(V)
5.引用可以不初始化。(X)
6.构造函数可以设置默认参数(V)
7.类的析构函数的作用是对象的初始化(X)
8.cout的默认输出对象是键盘,cin的默认输入对象是屏幕(X)
9.抽象类可以用来直接创立对象。(X)
10.常对象可以调用任意组员函数。(X)
简答题
3虚析构函数有什么作用?
解答要点:
对象销毁时,需要调用析构函数。在多态调用时,是用基类的指针访问派生类的对象。假
如析构函数是非虚函数,则基类指针只能访问基类的析构函数,而不能访问派生类的析构函数,
导致派生类对象销毁时,没有调用派生类的析构函数,只是调用了基类的析构函数。假如把析
构函数定义成虚函数,则可克服这个问题。
2、拷贝构造函数在哪几种状况下调用?
解答要点:
用一种对象初始化另一种对象时
当用对象作为函数参数传递时
当函数返回对象时
3、函数重载与函数覆盖有什么不一样,它们与多态有什么关系?
解答要点:
函数重载是指函数名相似,而函数的参数个数或类型不一样;覆盖是指在派生类中组员函
数与基类组员函数的函数名、参数个数、类型与返回值均相似;C++中正是通过虚函数的覆盖,
实现多态的功能。
4、C++继承是怎样工作的?
答:继承使得派生类可以使用基类的公有和保护组员,从而实现代码的复用,派生类可以
增长组员,也可以隐藏和覆盖基类的组员。对于公有继承,基类组员的访问权限在派生类保持
不变。
5、类与对象有什么区别?
答:类是类型,是对象的抽象,对象是类的详细实例。一种类可以有多种对象,每个对象
均有自己的存储单元,而类不占存储单元。
6.若程序员没有定义拷贝构造函数,则编译器自动生成一种缺省的拷贝构造函数,它也许会
产生什么问题?
解答要点:当对象具有指针数据组员,并用它初始化同类型的另一种对象时,缺省的拷贝构造
函数只能将该对象的数据组员复制给另一种对象,而不能将该对象中指针所指向的内存单元也
复制过去。这样,就也许出现同一内存单元释放两次,导致程序运行出错。
7.简述组员函数、全局函数和友元函数的差异。
解答要点:如下几点必须说清晰:
组员函数是在类内部定义的,作用域在类的内部,组员函数可以访问类的数据组员(公有、
保护和私有数据组员),可以调用该类的其他组员函数(公有、保护和私有组员函数),可以调
用全局函数。假如友元函数是另一种类的公有组员函数,则该类的组员函数也只能通过那个类
的对象调用,不能调用那个类的保护和私有组员函数。非本类组员函数(其他类组员函数或全
局函数)可以通过该类的对象访问该类的公有数据组员和调用该类的的公有组员函数。
不是在类中定义的组员函数都是全局函数。
假如某一种函数(全局函数或类的组员函数)定义为另一种类的友元函数,需要在那个类
中用friend关键字申明,友元函数并不是类的组员,它的定义自然是在那个类的外面。
8.简述构造化的程序设计、面向对象的程序设计的基本思想。
解答要点:
构造化的程序设计将数据和对数据的操作分离,程序是由一种个的函数构成的,面向对象的程
序设计将数据和操作封装在一起,程序是由一种个对象构成的,对象之间通过接口进行通信,
它可以很好地支持程序代码的复用。
9.构造struct和类class有什么异同?
解答要点:
struct和class都可以定义类,不过缺省访问权限阐明时,struct的组员是公有的,而class
的组员是私有的。在C++中,struct可被class替代。
程序阅读分析题
1、分析程序,写出程序的输出成果(7分)。
#include<iostream>
usingnamespacestd;
cIsssClock{
private:
intHour,Minute,Second;
pubIic:
voidSetTime(intNewH=24,intNewM=24,intNewS=24)
{Hour=NewH;Minute=NewM;Second=NewS;)
voidShowTimeO{cout«Hour«":"«Minute«":"«Second«endI;)
};
voidmain()
{cout«"timesetandoutput:"«endI;
ClockMyClock;
0;
0;
(8,30,30);
0;
)
输出成果:
timesetandoutput:
24:24:24
8:30:30
2、分析程序,写出程序的输出成果(7分)。
#incIude<iostream>
usingnamespacestd;
cIasspnint(
private:
intx,y;
pubIic:
point(intxx=0,intyy=0){x=xx;y二yy;cout<<"构造函数被调用"<<endI;}
point(point&p);
intGetX()(returnx;)
intGetY(){returny;)
);
point::point(point&p)
{x=;
y=;
cout<<"拷贝构造函数被调用"«endI;
)
voidmain()
(pointA(4.5);
pointB(A);
cout«3«endI;
1
输出成果:
构造函数被调用
拷贝构造函数被调用
4
3.在括号中注释对应的语句(8分)
#incIude<iostream>
usingnamespacestd;
II
n;
deIetepa;
)
(1)
(2)
(3)
(4)
(5)
4.请在如下两题中任选一题,该题得分即为本小题得分。如两题都答,则取两题得分之平均
值为本小题得分。
(1)程序:
#include<iostream>
#include<string>
usingnamespacestd;
classBase
{private:
chsrmsg[30];
protected:
intn;
pubIic:
Base(chars[],intm=0):n(m)
{strcpy(msg,s);
)
voidoutput(void)
(cout<<n«endl«msg«endl;
)
};
cIsssDerived1:publicBase
(
private:
intn;
pubIic:
Derived1(intm=1):
Base("Base",m-1)
{n=m;)
voidoutput(void)
{cout«n«endI;
Base::output();
)
};
cIassDerived2:publicDerived1
private:
intn;
pubIic:
Derived2(intm=2):
Derived1(m-1)
{n=m;1
voidoutput(void)
{cout«n«endI;
Derived1::output();
I
1;
intmain()
(
BaseB("BaseClass",1);
Derived2D;
0;
0;
I
运行成果:
1
BaseClass
2
1
0
Base
(2)程序:
#incIude<iostream>
usingnamespacestd;
classSamp
{pubIic:
voidSetij(inta,intb){i=a,j=b;|
~Samp()
{cout«"Destroying.."«i«endI;
1
intGetMuti()(returni*j;}
protected:
inti;
inti:
1;
intmain()
(
Samp*p;
p二newSamp[5];
if(Ip)
(cout«"AIlocationerror\n";
return1;
)
for(intj=0;j<5;j++)
p[j].Setij(j,j);
for(intk=0;k<5;k++)
cout«,Muti["«k«"]is:"
«p[k].GetMuti()«endI;
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<iostream>
usingnamespacestd;
cIassVector
pubIic:
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<01|ndx>=size)
(
cout«"errorinindex"«endI;
exit⑴;
1
returnbuffer[ndx];
}
voidVector::DispIay(void)
(
for(intj=0;j<size;j++)
cout«Elem(j)«endI;
)
voidVector::Set(void)
(
for(intj=0;j<size;j++)
Elem(j)=j+1;
1
Vector::^Vector(void)
delete[]buffer;
)
intmain()
(
Vectora(10);
Vectorb(a);
0;
0;
1
运行成果:
1
2
3
4
5
6
7
8
9
10
最终出现错误信息,原因是:申明对象b是进行的是浅拷贝,b与a共用同一种buffer,程
序结束前调用析构函数时对同一内存区进行了两次释放。
6.阅读下面程序,写出输出成果。
#include<iostream>
usingnamespacestd;
classCPosition
{
pubIic:
CPosition(intiPositionX=0,intiPositionY=0):miPositionX(iPositionX)
(
m_iPositionY=iPositionY;
1
intGetPositionX()const
(
returnmiPositionX;
}
intGetPositionY()const
{
returnmiPositionY;
}
voidSetPositionX(intiPositionX)
(
m_iPositionX=iPositionX;
)
voidSetPositionY(intiPositionY)
miPositionY=iPositionY;
private:
intm_iPositionX;序分析题(本大题共5小题,每题4分,共分)给出下
面各程序的输出成果。
1.若有如下程序:
#include<iostream>
usingnamespacestd:
classA
{
inta;
public:
A(intaa=0){a=aa;}
~A(){cout«"DestructorA!"«a«endI;}
);
classB:publicA
{
intb;
public:
B(intaa=0,intbb=0):A(aa){b=bb;}
~B(){cout«"DestructorB!"«b«endI:)
};
intmain()
{
Bx(5),y(6,7);
return0:
1
上面程序的输出成果为:
DestructorB!7
DestructorA!6
DestructorB!0
DestructorA!5
2.若有如下程序:
#include<iostream>
usingnamespacestd;
cIassPoint
intx,y:
pubIic:
Point(){x=0;y=0;}
voidSetPoint(intx1,inty1){x=x1;y=y1;}
voidDisPoint(){cout«"x="«x«","«"y="«y«endI;}
1;
intmain()
(
Point*p=newPoint;
p->SetPoint(5.12);
p->DisPoint();
deletep:
return0;
)
上面程序的输出成果为:
x=5,y=12
3.若有如下程序:
#include<iostream>
usingnamespacestd;
classBase
{
pubIic:
voidFun(){cout«'1"«endI:}
1;
classDerived:publicBase
(
pubIic:
voidFun()(cout«'2"«endI;}
);
intmain()
{
Deriveda;
Base*p;
p=&a;
p->Fun();
0;
return0;
1
上面程序的输出成果为:
1
2
4.阅读下面程序,写出输出成果。
#include<iostream>
usingnamespacestd;
classPoint
{
pubIic:
Point(intx=0,inty=0):m_x(x),m_y(y){)
intGetX0const{returnm_x:)
intGetY()const{returnm_y;}
voidSetX(intx){m_:<=x:)
voidSetY(inty){m_y=y:}
private:
intm_x;etint()«"«array[1].getfloat()«endI;
}
成果:
InitaIizingdefau11
InitaIizingdefault
00
Desdtructorisactive
Desdtructorisactive
程序填空题
1.本程序用递归的措施计算Fibonacci数列的前20项°Fibonacci数列的规律是:数列前
两项均为1,从第三项开始,每一项都是其前两项的和。请补全fac函数。
intfac(intn)
(
)
2.本程序的功能是输出三角形式的九九乘法表。请在横线上填空。
3.在下面程序的横线处填上对的的语句,以实现动态多态。
程序改错题
1.
classBase{
inta;
pubIic:
intb:
intf(inti,intj);
);
classDerived:Base(
intc:
pubIic:
intBase::b;
Base::f(inti,intj);
};
[1]intbase::b;更改为base::b;(或访问申明仅仅调整名字
的访问,不可为它阐明任何类型)
[2]base::f(inti,intj);更改为base::f;(或访问申明不应
阐明函数参数)
2.
#include<>
classA{
pubIic:
voidA(inti=0)(m=i;}
voidshow(){cout«m;|
void~A(){)
private:
intm:};
voidmain()
(
Aa(5);
+=10;
0;
1
[3]voidA(inti=0){m=i;}更改为构造函数去掉void(或构造函
数不能指定返回值类型)
[4]void~A(){}更改为析构函数去掉void(或析构函数不能指定
返回值类型)
[5]+=10;更改为对象不能访问私有组员
3.
#incIudR<icatream)
usingnamespacestd;
classbase(
inta;
staticintb;
pubIic:
base(intm,intn):a(m),b(n){}
staticintgeta(){returna;}
staticintgetb(){returnb;}
voidshov/(){cout«geta()«**jA,niA«getb()«endI;}
):
base::intb=45;
voidmain()
{
)
[6]base(intm,intn):a(m),b(n){)更改为不能通过构造函数初始
化静态数据组员(只要把b(n)去掉即可)
[7]staticintgeta(){returna;)更改为静态组员函数中不能引
用非静态组员数据组员(或去掉static)
[8]base::intb=45;更改为intbase::b=45;
4.
TempIate<cIassT>
Tfun(Tx)
(
Ty;
y=T-2*x;
returny;
)
[1]TempIate<cIassT>改为i.叩laieGiassT>
[2]y=T-2*x;T不能用作-的操作数
3.
#include<iostream>
classA
{pubIic:
voidsetA(int);
voidshowA();
private:
inta:
);
classB
{pubIic:
voidsetB(int);
voidshowB();
private:
intb;
};
cIassC:pubIicA,privateB
{pubIic:
voidsetC(int,int,int);
voidshowCO;
private:
intc:
1;
voidA::setA(intx)
{a=x;}
voidB::setB(intx)
{b=x;}
voidC::setC(intx,inty,intz)
(
a=x;
b=y:
setA(x);
setB(y);
c=z:
)
[4]a=x;(派生类不能访问基类A类的私有组员)
[5]b=y;(派生类不能访问基类B类的私有组员)
[6](6);(不能访问B类的公有组员setB)
[7]();(不能访问B类的公有组员showB)
[8]return0;(去掉此语句,或主函数的返回值void去掉或改为
int)
程序设计题
1.编写一种函数模板,用于求数组中各元素之和,并编写测试程序进行测试。(10分)
函数模板申明如下:
template<classType>
TypeSum(TypetArray[]tintiSize)
#include<iostream>
usingnamespacestd;
tempIate<cIassType>
TypeSum(TypetArray口,intiSize)
(
TypetSum=0;
for(inti=0;i<iSize;i++)
(
tSum=tSum+tArray[i];
)
returntSum;
intmain(void)
(
inta[]={1,2.3);
doubleb[]={,,,8);
cout«Sum(a,3)«endI;
cout«Sum(b,4)«endI;
return0;
2.定义一种复数类Co叩Iex,二个数据组员为double型r,i为private属性。定义代二个
参数的构造函数和一种Show()函数用以输出r.i的值,此外作为组员函数重载的运算苻”
+”的功能是将此类二个对象的数据组员r和i对应相加,这些组员函数的属性均为public.
请用C++编写此程序,并编写测试程序进行测试。(10分)
#include<iostream>
usingnamespacestd;
cIassComplex
(
private:
doubler,i;
pubIic:
CompIex(doubIea.doubleb):r(a),i(b){|
voidShow(){cout«r«""«i«endI;}
CompIexoperator+(CompIexobj)
{returnComplex(r+,i+;)
};
3.设计一种类DateInf。,规定其满足下述规定:(10分)
(1)规定有一种无参的构造函数,其初始的年、月、日分别为:,6,8o
(2)规定有一种带参数的构造函数,其参数分别对应年、月、日。
(3)规定用一种组员函数实现日期的设置。
(4)规定用一种组员函数实现日期的获取。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年模块电源测试题及答案
- 2026年童年河测试题加上答案
- 2026年比内智力测试题目及答案
- 阅读专项闯关题及答案
- 秘书专业试卷试题及答案分享
- 补语专项试题及详细答案
- 2026年中国天然原油产业现状深度调研及十五五盈利空间评估报告
- vte防治护理理论知识题库及答案详解
- 初学者ctf题库及答案详解
- 2026年中国快消品电商产业深度调研与发展战略研究报告
- 量化交易技术
- 电厂燃料培训课件
- 大物下册考试试题及答案
- JG/T 312-2011遇水膨胀止水胶
- 教学设计与教案的区别
- 超纯水设备采购合同协议
- 鞋材面料知识培训课件
- 《网络安全技术》课件第1章
- GB/T 21617-2023危险品固体氧化性试验方法
- GB/T 8464-2023铁制、铜制和不锈钢制螺纹连接阀门
- 校园文明教育-主题班会课件
评论
0/150
提交评论