c++期末考试判断题+填空题.docx
- 文档编号:12835898
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:31
- 大小:32.45KB
c++期末考试判断题+填空题.docx
《c++期末考试判断题+填空题.docx》由会员分享,可在线阅读,更多相关《c++期末考试判断题+填空题.docx(31页珍藏版)》请在冰点文库上搜索。
c++期末考试判断题+填空题
判断题
1、对空指针不能用delete运算符。
(错误)
2、对重载的函数,要求函数类型相同但参数不同。
(错误)
3、任何一个对象只能属于一个具体的类。
(正确)
4、用new运算符来创建对象时不会调用构造函数。
(错误)
5、对重载的函数,要求参数不同或函数类型不同。
(错误)
6、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
(错误)
7、析构函数可以是虚函数。
(正确)
8、无论什么方式的继承,基类的私有成员都不能被派生类访问。
(正确)
9、要达到动态联编的效果,基类和派生类的对应函数不仅名字相同,而且返回类型、参数个数和类型也必须相同。
(正确)
10、如果派生类没有实现虚函数,那么它将使用他的基类的虚函数。
(正确)
11、构造函数可以是虚函数。
(错误)
12、指向对象数组的指针不一定必须指向数组的首指针。
(正确)
13、对象数组的元素可以是不同类的对象。
(错误)
14、对象数组可以赋初值又可以赋值。
(错误)
15、一个类的构造函数可以不包含对其子对象的初始化。
(错误)
16、在C++中,既允许单继承,又允许多继承。
(正确)
17、派生类从基类派生出来,它不能生成新的派生类。
(错误)
18、派生类的继承方式只有2种:
公有继承和私有继承。
(错误)
19、在公有继承中,基类的成员在派生类中都可以直接使用。
(错误)
20、在单继承中,派生类中对基类成员的访问也会出现二义性。
(错误)
21、解决多继承下二义性问题的方法之一是使用作用域运算符。
(正确)
22、作用域运算符(:
:
)只能用来限定成员函数所属的类。
(错误)
注:
还限制成员变量所属的类。
23、析构函数是一种函数体为空的成员函数。
(错误)
24、构造函数和析构函数都不能重载。
(错误)
注:
构造函数可以重载,析构函数不可以重载(因为析构函数无参数,不可能进行参数区分)。
25、说明或定义对象时,类名前面不需要加class关键字。
(正确)
26、对象成员的表示与结构变量成员表示相同,使用运算符.或->。
(正确)
27.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。
(错误)注:
私有成员还可以被友元访问。
28、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
(正确)
29、可以在类的构造函数中对静态数据成员进行初始化。
(错误)
注:
静态数据成员属于类而不管是否存在该类的对象,只有创建对象才会调用构造函数,所以静态成员不应该在构造函数中初始。
30、如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。
(正确)注:
一般情况,静态成员函数不能访问类的非静态成员;非静态成员函数可访问类任何成员。
31、使用关键字class定义的类中缺省的访问权限是私有(private)的。
(正确)
32、已知:
m是类A的对象,n是类A的公有数据成员,p是指向类A中n成员的指针。
下述两种表示是等价的:
和m.*p(正确)
33、指向对象的指针与对象都可以作函数参数,但是使用前者比后者好些。
(正确)
34、对象引用作函数参数比用对象指针更方便些。
(正确)注:
不需要间接访问
35、对象数组的元素可以是不同类的对象。
(错误)
36、对象数组既可以赋初值又可以赋值。
(正确)
37、指向对象数组的指针不一定必须指向数组的首元素。
(正确)注:
指针可以移动。
38、一维对象指针数组的每个元素应该是某个类的对象的地址值。
(正确)
39、constchar*p说明了p是指向字符串的常量指针。
(错误)注:
p是指向字符串常量的指针-正确。
40、一个类的构造函数中可以不包含对其子对象的初始化。
(正确)
注:
形式上可以,但本质会调用缺省构造函数对子对象进行初始化。
本题有二义性。
41、转换函数不是成员函数,它是用来进行强制类型转换的。
(错误)
42、指向对象的指针和指向类的成员的指针在表示形式上是不相同的。
(正确)
43、C++语言中,既允许单继承,又允许多继承。
(正确)
44、派生类是从基类派生出来,它不能再生成新的派生类。
(错误)
1.45、派生类的继承方式有两种:
公有继承和私有继承。
(错误)若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。
对,没有别的办法
10.构造函数的函数体中,不能使用return语句;但在实现该类的自动类型转化函数时,必须有return语句。
对
1、C++中标识符内的大小写字母是没有区别的。
(F)
2、C++是一种以编译方式实现的高级语言。
(T)
3、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
( F)
4、在私有继承中,基类中所有成员对派生类都是不可见的。
( F)
5、返回值类型、参数个数和类型都相同的函数也可以重载。
(F)
6、使用关键字class定义的类中缺省的访问权限是私有(private)的。
(T)
7、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。
(F) )
8、C++中使用了新的注释符(C++中使用了新的注释符(数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。
( F)
33.隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。
( F)
34.宏定义命令是以分号结束的。
( F)
35.While循环语句的循环体至少执行一次。
( F)
36.返回值类型、参数个数和类型都相同的函数也可以重载。
( F)
37.函数形参的作用域是该函数的函数体。
( T)
38.静态类标识符在它的作用域之外是不存在的。
( F)
39.对象成员的表示与结构变量成员表示相同,使用运算符.或->。
(T )
40.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
(T )
41.对象数组的元素可以是不同类的对象。
( T)
42.constchar*p说明了p是指向字符串的常量指针。
(F )
43、引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。
( F)
44、无论是私有继承还是保护继承中,基类中所有成员对派生类对象都是不可见的。
(T )
45、当break语句用在双重循环的内循环中时,它只能退出内循环到外循环中去,而不能直出整个双重循环。
( T)
46、For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。
(F )
47、返回值类型、参数个数和参数类型都相同的函数也可以重载。
( F)
48、通常的拷贝初始化函数的参数是某个对象的成员名或对象的引用名。
(T )
49、友元函数是类的成员函数,所以可以存取或修改该类中的私有成员。
( F)
50、已知:
类A中一个成员函数说明如下:
voidSet(A&a);其中A&a的含意是将a的地给变量Set。
(F )
51、在语句constchar*ptr中,ptr是指向字符串的常量指针。
( F)
52、多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序,而与派生类构造函数中所定义的成员初始化列表的各项顺序无关。
( T)
53、在说明语句inta(15),&b=a,*p=&a;中,b的值的*P的是不相等的。
( F )
54、已知:
inta(5),b(10); 表达式++a+b++有二义性。
( F )
55、在不同类型操作数组成的表达式中,其表达式的类型一定是最高类型double型。
(F )
56、break语句也可以用于if体内,它可退出if语句。
( F )
57、在一个被调用函数中,一个return语句可返回多个值给调用函数。
( F )
58、在传值调用中,要求实参和形参的类型完全一致并且个数相等。
( F )
59、for循环中,循环变量的作用域是该循环的循环体内。
( F )
60、所谓私有成员是指只有类中所提供的成员函数才能直接访问它们,任何类以外的函数对它们的访问都是非法的。
( F )
61、constchar*p说明了p是指向字符串的常量指针。
( F )
62、私有继承中,基类中所有成员对派生类的对象都是不可见的。
( F )
填空
1、定义类的动态对象数组时,系统只能够自动调用该类的无参构造函数对其进行初始化。
2、在C++程序设计中,建立继承关系倒挂的树应使用单一(或单)继承。
3、表达式cout< 4、基类的公有成员在派生类中的访问权限由访问控制决定。 5、C++支持的两种多态性分别是编译时的(或静态,或操作重载)多态性和运行时的(或动态,或虚函数)多态性。 6、C++中语句constchar*constp=″hello″;所定义的指针p和它所指的内容都不能被改变(或重新赋值)。 7、假定AB为一个类,则语句AB(AB&x);为该类复制初始化(或拷贝)构造函数的原型说明。 8、将关键字const写在成员函数的函数头(或参数表)和函数体之间时,所修饰的是this指针。 9、在C++中,访问一个对象的成员所用的运算符是成员选择运算符(或“.”),访问一个指针所指向的对象的成员所用的运算符是成员访问运算符(或“->”)。 10、派生类从一个或多个以前定义的该类的基类继承数据和函数。 11、在一个类中可以对一个操作符进行函数重载。 12、在C++中有二种参数传递方式: 传值与传引用。 13、模板对处理数据的类型的要求不同可以分为两种类型: 函数模板与类模板。 14、静态联编是在程序_编译时进行的,而动态联编是在程序_运行时进行的。 15、在函数体之前加___const__关键字可以防止函数改变数据成员的值。 16、一个const对象只能访问__const_成员函数。 17、派生类的主要用途是可以定义其基类中成员函数。 18、当建立____对象时__,程序自动调用该类的构造函数。 19、使用指向对象的指针来标识类的成员,则使用的运算符是_->__。 20、拷贝初始化构造函数使用一个已知对象来初始化创建中的对象。 21、使用const语句定义一个标识符常量时,则必须对它同时进行初始化。 22、设px是指向一个类动态对象的指针变量,则执行”deletepx;”语句时,将自动调 用该类的析构函数。 23、若需要把一个函数”voidF();”定义为一个类AB的友元函数,则应在类AB的定义 中加入一条语句: friendvoidF(); 24、若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用 头文件。 25、在C++中,用数组、指针、和引用作为函数参数,能够将参数值带回。 26、在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的封装特性。 27、在C++中,构造派生类对象时,总是先从基类的初始化开始的。 28、拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是各个成员的复制。 29、类是用户定义的类型,具有类类型的变量称作对象。 30、在C++中,类定义一般用class关键字,不过用struct关键字也可以定义类,它们定义类的区别在于用class定义时成员默认为private,用struct定义时成员默认为public。 31、静态的成员函数没有隐含的this指针,所以,它们只能访问静态的数据成员。 32、在面向对象的程序设计中,通过类实现数据隐藏;通过继承实现代码的复用。 33、在下面的程序段中,语句"constint*c=&a;"和语句"int*constd=&b;"的含义分别是定义一个指向禁止修改的实体的指针、定义一个指针常量(不可修改的指针)。 constinta=78; intb=28; constint*c=&a; int*constd=&b; 34、用new申请有10个数组元素的指针str,假定数组元素是字符型数据,该C++语句为char*str=newchar[10]。 35、在C++中构造一个对象时,其数据成员在构造函数中初始化。 对于内嵌的子对象、基类成员、静态数据成员需要在构造函数的成员初始化列表中初始化。 36、在类的定义中,保护数据成员具有双重作用: 对于其派生类而言,类似于public成员;而对于其外部的程序而言,类似于private成员。 37、C++中,对象保存在内存中,栈内存是自动分配和释放的,而堆内存需要用户自己申请和释放。 38、在C++函数中,可用return语句带回一个值。 如果有多个返回值,可用指针、引用带回。 39、拷贝构造函数使用对象引用作为参数初始化创建中的对象。 40、用new申请某一个类的动态对象数组时,在该类中必须能够匹配到缺省的构造函数,否则应用程序会产生一个编译错误。 41、静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象使用。 42、面向对象的程序设计有四大特征,它们是抽象、封装、继承、多态性。 43、在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型不同。 43、动态联编要满足两个条件,它们是使用基类指针、虚函数。 44、在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为抽象类,定义该类至少具有一个纯虚函数。 45、在C++类中,const关键字可以修饰对象和成员函数,const对象不能被修改,只有const成员函数才能操作const对象。 46、举出C++中两种用户自定义的数据类型: 结构体、类。 47、面向对象程序设计的继承机制提供了重复利用程序资源的一种途径。 48、对虚函数使用基类类型的指针或引用调用,系统使用动态联编;而使用对象调用时,系统使用静态联编。 49、允许访问一个类的所有对象的私有成员、公有成员和保护成员的函数是该类的成员函数和友员函数。 50、执行完C++程序中的三条语句: inta,b,*c=&a; int*&p=c; p=&b; 后c指向b。 51、在类定义中,类说明以关键字class开始,其后跟类名,它必须是一个有效的C++标识符。 类说明的内容用花括号括起来,称为类的定义。 52、实现类对象初始化任务的是该类的构造函数。 53、初始化类模板时,相对于它的每个参数要提供类型参数。 54、从一个抽象类派生的类必须提供纯虚函数的实现代码,或者在该派生类中将它再说明为纯虚函数。 55、.将关键字const写在函数头之后,函数体之前,说明该函数是一个const成员函数。 此时const不是指定函数的返回值,而是修饰this指针。 56、一个抽象类的派生类可以实例化的必要条件是实现了所有的纯虚函数。 57、在C++中,虚函数帮助实现了类的多态性,而虚基类解决了二义性。 58、通过C++语言中类的继承,可以扩充和完善已有类以适应新的需求。 59、为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义析造函数。 60、在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由ip所指向,应使用语句ip=newint[10];。 1.在C++中,函数的参数有两种传递方式,它们是值传递和地址或指针或引用传递。 2.当一个成员函数被调用时,该成员函数的this指针指向调用它的对象。 3.在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。 对两个有相同名字的数据成员进行访问时,如果没有作用域分隔符限定时,对此数据成员的访问将出现歧义。 4.拷贝构造函数使用引用作为参数初始化创建中的对象。 5.在公有继承的情况下,基类数据成员在派生类中的访问权限保持不变。 6.描述命题"A小于B或小于C"的表达式为A 7.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到没有形参的或缺省参数构造函数,否则应用程序会产生一个编译错误。 8.静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象共享。 9.为了避免可能出现的歧义,C++对if…else语句配对规则规定为: else总是与与最近的if配对。 10.设"inta=3,b=4,c=5;",表达式"(a+b)>c&&b==c"的值是0。 (以下每小题2分,共20分) 11.面向对象的程序设计有四大特征,它们是抽象、封装、继承、多态。 12.在VisualC++中,定义重载函数时,应至少使重载函数的参数个数或参数类型不同;在基类和派生类中,成员函数的覆盖是指派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同。 13.构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个~、析构函数没有参数、析构函数可以定义为虚函数。 14.动态联编要满足两个条件,它们是被调用的成员函数是虚函数、用指针或引用调用虚函数。 15.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为抽象类,定义该类至少具有一个纯虚函数。 16.在C++类中,const关键字可以修饰对象和成员函数,const对象不能被修改,const成员函数不能修改类数据成员。 17.举出C++中两种用户自定义的数据类型: 类、枚举。 18.C++中没有字符串类型,字符串是通过字符数组来表示的,每一个字符串都有一个结尾字符\0。 19.C++中没有输入输出语句,输入输出是通过输入输出库实现的,写出一条打印整型变量n的输出语句: cout< 20.举出C++中两种代码复用的方式: 继承、复用。 1.C++语言的头文件与源程序文件扩展名分别是(.h)和(.cpp)。 2.在C++程序中使用基本输入与输出流时需要包含的头文件名是(iostream)。 3.在C++语言中,惟一的一个三目运算运算符是(: )。 4.C++中当一个函数无返回值时,则函数的类型是(void)。 5.一个类中可以有(多)个构造函数,只能有 (一)个析构函数。 6.一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为(私有)权限, 而把成员函数(方法)定义为(公有)权限. 7.在定义类的对象时,C++程序将自动调用该对象的(构造)函数初始化对象自身.在撤销类的对象时,C++程序将自动调用该对象的(折构)函数. 8.类继承中,缺省的继承方式是(私有继承). 9.在C++语言中,用转义字符序列('\n')或操纵符(endl)表示输出一个换行符。 10.表达式a=a+l表示成增量表达式为(++a)。 11.当不需要函数返回任何值时,则应把该函数类型定义为(void)。 12.用于输出表达式值的标准输出流对象是(cout)。 ,用于从键盘上为变量输人值的标准输人流对象是(cin)。 13、变量分为全局和局部两种,(全局变量默认初始化为0)。 变量没有赋初值时,其值是不确定的。 14、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为(AB: : bb)。 15、类的成员分为_数据成员_和_成员函数_。 16、一个_类_和_对象_的关系,正如基本数据类型与该类型的变量一样,如intx;。 17、对一个类中的数据成员的初始化可以通过构造函数中的_赋值_实现,也可以通过构造函数中的_初始化列表_实现。 18、类有两种用法: 一种是_定义对象_,即生成类的对象;另一种是通过_派生_,派生出新的类。 19、C++语言提供的_多态_机制允许一个派生类继承多个基类,即使这些基类是相互无关的。 20、声明虚函数的方法是在基类中的成员函数原型前加上关键字_virtual_。 21、如果一个类中有一个或多个纯虚函数,则这个类称为_虚基类_。 22、静态数据成员在定义或说明时,前面要加上关键字_static_。 23、如果成员函数不需要访问类的_非静态_成员,则可以把它声明为静态成员函数。 24、友元可以是_全局函数_,也可以是_其他类的成员函数_。 25、若需要把一个函数“voidfun();”定义为一个类A的友元函数,则应在类A的定义中加入一条语句: _friendvoidfun();_。 26、运算符函数中的关键字是_operator_,它和_运算符_一起组成该运算符函数的函数名。 27、类中运算符重载一般采用两种形式: _成员函数_和_友元函数_。 28、面向对象程序设计的3大机制为: _封装性_、_继承性_和_多态性_。 2、类的访问权限有_public_、_private_和_protected_三种。 29、构造函数是_对象_被创建时自动执行,对象消失时自动执行的成员函数称为_析构函数_。 30、如果类A继承了类B,则类A称为_基类_,类B称为_派生类_。 31、如果一个特定的类型S当且仅当它提供了类型T的行为时,则称类型S是类型T的__子类型_。 32、在类定义中,将_=0_置于虚函数的函数原型的末尾可以声明该函数为纯虚函数。 33、类的静态成员分为_静态数据成员_和_静态成员函数_。 34、友元函数的声明可以放在类的_私有_部分,也可以放在类的_共有_部分,它们是没有区别的。 35、如果说类B是类A的友元类,则类B的所有成员函数都是类A的_成员函数_。 36、设a和b是两个整型变量,我们用a+b的形式求这两个变量的和;设c和d为浮点型变量,我们用c+d的形式求这两个变量的和。 显然运算符“+”具有不同的用途,这是_运算符重载_的例子。 37、对于双目运算符,若重载为类的成员函数,有1_个参数;若重载为友元函数,则有_2个参数。 38、当建立__一个新的对象___,程序自动调用该类的构造函数。 39、在C++中有二种参数传递方式: __传值___和___引用__。 40、模板对处理数据的类型的要求不同可以分为两种类型: __函数模板__和__类模板__。 41、异常是通过_检查(try)__、_抛出(throw)__和__捕捉(catch)__来实现的。 42、虚函数实现了C++的__多态__机制,类实现了C++的___封装__机制。 43、面向对象程序设计的___继承___机制提供了重复利用程序资源的一种途径。 44、C++语言程序设计的三种基本结构是: _顺序结构_、_选择结构_、__循环结构__。 45、为了避免嵌套的条件语句if-else的二义性,C++语言规定else与__if__配对使用。 46、定义函数时,在函数的类型前加上修饰词___inline___,指明将该函数定义为内联函数。 47、有说明语句: *p;则*p++运算首先访问___*p___,然后使__p____的值加1。 48、执行int*p=newint操作,可以得到一个动态分配整型对象的__指针____。 49、有说明语句: int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 期末考试 判断 填空