c++期末考试判断题+填空题Word格式.docx
《c++期末考试判断题+填空题Word格式.docx》由会员分享,可在线阅读,更多相关《c++期末考试判断题+填空题Word格式.docx(24页珍藏版)》请在冰点文库上搜索。
![c++期末考试判断题+填空题Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/8b2d8959-a3a7-41b3-bb42-10f88e393e91/8b2d8959-a3a7-41b3-bb42-10f88e393e911.gif)
构造函数可以重载,析构函数不可以重载(因为析构函数无参数,不可能进行参数区分)。
25、说明或定义对象时,类名前面不需要加class关键字。
26、对象成员的表示与结构变量成员表示相同,使用运算符.或->
。
27.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。
(错误)注:
私有成员还可以被友元访问。
28、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
29、可以在类的构造函数中对静态数据成员进行初始化。
静态数据成员属于类而不管是否存在该类的对象,只有创建对象才会调用构造函数,所以静态成员不应该在构造函数中初始。
30、如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。
(正确)注:
一般情况,静态成员函数不能访问类的非静态成员;
非静态成员函数可访问类任何成员。
31、使用关键字class定义的类中缺省的访问权限是私有(private)的。
32、已知:
m是类A的对象,n是类A的公有数据成员,p是指向类A中n成员的指针。
下述两种表示是等价的:
m.n和m.*p(正确)
33、指向对象的指针与对象都可以作函数参数,但是使用前者比后者好些。
34、对象引用作函数参数比用对象指针更方便些。
不需要间接访问
35、对象数组的元素可以是不同类的对象。
36、对象数组既可以赋初值又可以赋值。
37、指向对象数组的指针不一定必须指向数组的首元素。
指针可以移动。
38、一维对象指针数组的每个元素应该是某个类的对象的地址值。
(正确)
39、constchar*p说明了p是指向字符串的常量指针。
p是指向字符串常量的指针-正确。
40、一个类的构造函数中可以不包含对其子对象的初始化。
形式上可以,但本质会调用缺省构造函数对子对象进行初始化。
本题有二义性。
41、转换函数不是成员函数,它是用来进行强制类型转换的。
42、指向对象的指针和指向类的成员的指针在表示形式上是不相同的。
43、C++语言中,既允许单继承,又允许多继承。
44、派生类是从基类派生出来,它不能再生成新的派生类。
45、派生类的继承方式有两种:
(错误)//还有保护继承
45、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
基类中的公有成员和保护成员在派生类中都是可见的,基类私有成员在派生类中不可见。
47、在公有继承中,基类中只有公有成员对派生类对象是可见的。
48、在私有继承中,基类中只有公有成员对派生类是可见的。
//保护成员也可见(错误)
49、在私有继承中,基类中所有成员对派生类的对象都是不可见的。
基类成员public,protected成员都变成派生类private成员了。
50、在保护继承中,对于垂直访问同于公有继承,而对于水平访问同于私有继承。
51、派生类是它的基类的组合。
(错误)//不仅是组合,更重要的是扩充和完善
52、构造函数可以被继承。
53、析构函数不能被继承。
构造函数、析构函数都不能继承。
54、子类型是不可逆的。
55、只要是类M继承了类N,就可以说类M是类N的子类型。
(错误)//公有继承
56、如果A类型是B类型的子类型,则A类型必然适应于B类型。
57、多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。
58、单继承情况下,派生类中对基类成员的访问也会出现二义性。
59、解决多继承情况下出现的二义性的方法之一是使用成员名限定法。
严格讲“作用域限定”。
60、虚基类是用来解决多继承中公共基类在派生类中只产生一个基类子对象的问题。
“多个”
61、函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。
62、重载函数可以带有缺省值参数,但是要注意二义性。
63、多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。
64、对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。
(错误)//“可以重载为非成员函数”不确切。
65、对单目运算符重载为友元函数时,说明一个形参;
重载为成员函数时,不能显式说明形参。
前面描述对的。
此题不全面,应该是“重载为成员函数时,除了后置++、--,不能显式说明形参。
本题一般理解也可以按上面描述,此题考试不扣分。
66、重载运算符保持原运算符的优先级和结合性不变。
67、虚函数是用virtual关键字说明的成员函数。
68、构造函数说明为纯虚函数是没有意义的。
69、抽象类是指一些没有说明对象的类。
(错误)//抽象类是指一些“不能”说明对象的类。
70、动态联编是在运行时选定调用的成员函数的。
1.重载流操作符<
<
和>
>
时,如果第一个参数的类型为ostream和istream,那么这个重载函数既可以用于标准输入输出流,也可以用于文件流上。
对,ostream和istream是标准输入输出流、文件流、字符串流的基类
2.在同一个类中,可以定义重载的成员函数voidf(int);
和virtualvoidf(int);
。
错,这属于重复定义
3.抽象类不会产生实例,所以不需要有构造函数。
错,被派生时需要它的构造函数
4.类A有一个非静态的成员函数f,其函数原型是:
voidA:
f()const,则该函数被调用时,一定是通过类A或类A的某后裔类的一个用const修饰符说明的常量对象调用的。
错,常函数可以由变量对象或常量对象调用
5.异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。
错,可以在外层捕获,并且这是最常见的用法
6.只要程序中没有Aa1=a2;
和Aa1(a2);
形式的代码,类A的拷贝构造函数就不会被调用。
错,参数传递或函数返回时也调用拷贝构造函数
7.在protected继承方式下,派生类对象的指针不能直接转换成指向基类对象的指针。
对,否则基类中的公有成员由不可见变为可见,权限被放大
8.若静态成员函数中调用了一个函数f,那么f一定不是虚函数。
对,静态成员函数不能是虚函数,因为虚函数入口需要在保存在对象中的虚函数表中,而静态成员函数不属于对象。
9.若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。
对,没有别的办法
10.构造函数的函数体中,不能使用return语句;
但在实现该类的自动类型转化函数时,必须有return语句。
对
1、C++中标识符内的大小写字母是没有区别的。
(F)
2、C++是一种以编译方式实现的高级语言。
(T)
3、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
( F)
4、在私有继承中,基类中所有成员对派生类都是不可见的。
( F)
5、返回值类型、参数个数和类型都相同的函数也可以重载。
(F)
6、使用关键字class定义的类中缺省的访问权限是私有(private)的。
(T)
7、类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。
(F) )
8、C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用。
( F)
9、While循环语句的循环体至少执行一次。
( F)
10、引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。
(T )
11、类封装了数据和操作。
(T)
12、在类的定义中,必须包含private、public、protected三种存取方式对应的部分。
(F)
13、类中的数据成员不能为指针类型。
(F)
14、析构函数可以有形参。
(T)
15、派生类至少有一个基类。
(T)
16、在公有和保护继承方式下,派生类的对象可以对基类的保护成员进行访问。
(T)
17、全局函数和静态成员函数也能声明为虚函数。
(F)
18、在一个类的对象空间里不包含静态成员的空间。
(T)
19、友元本身就是类的成员。
(T)
20、运算符重载后,原运算符的优先级和结合特性会改变。
(F)
21、一个类只能有一个对象。
(F)
22、在类中不能对所定义的数据成员进行初始化。
(T)
23、类的公有成员函数是类与外界的接口。
(T)
24、构造函数没有函数类型。
(T)
25、在派生类的构造函数的初始化表中不能对包含基类的子对象初始化。
(T)
26、在公有和保护继承方式下,派生类的成员可以对基类的保护成员进行访问。
(F)
27、只有类的成员函数才能声明为虚函数。
(T)
28、在一个类的对象空间里已经包含了静态成员的空间。
(F)
29、C++不允许将构造函数、析构函数和虚函数声明为友元函数。
(T)
30、运算符重载后,原运算符的优先级和结合特性不会改变。
(T)
31. C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用。
( F)
32. 数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。
( F)
33. 隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。
( F)
34. 宏定义命令是以分号结束的。
( F)
35. While循环语句的循环体至少执行一次。
( F)
36. 返回值类型、参数个数和类型都相同的函数也可以重载。
( F)
37. 函数形参的作用域是该函数的函数体。
( T)
38. 静态类标识符在它的作用域之外是不存在的。
( F)
39. 对象成员的表示与结构变量成员表示相同,使用运算符.或->
(T )
40. 某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
(T )
41. 对象数组的元素可以是不同类的对象。
42. constchar*p说明了p是指向字符串的常量指针。
(F )
43、引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。
( F)
44、无论是私有继承还是保护继承中,基类中所有成员对派生类对象都是不可见的。
(T )
45、当break语句用在双重循环的内循环中时,它只能退出内循环到外循环中去,而不能直出整个双重循环。
( T)
46、 For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。
(F )
47、返回值类型、参数个数和参数类型都相同的函数也可以重载。
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++有二义性。
55、在不同类型操作数组成的表达式中,其表达式的类型一定是最高类型double型。
(F )
56、break语句也可以用于if体内,它可退出if语句。
57、在一个被调用函数中,一个return语句可返回多个值给调用函数。
58、在传值调用中,要求实参和形参的类型完全一致并且个数相等。
59、for循环中,循环变量的作用域是该循环的循环体内。
60、所谓私有成员是指只有类中所提供的成员函数才能直接访问它们,任何类以外的函数对它们的访问都是非法的。
61、constchar*p说明了p是指向字符串的常量指针。
62、私有继承中,基类中所有成员对派生类的对象都是不可见的。
填空
1、定义类的动态对象数组时,系统只能够自动调用该类的无参构造函数对其进行初始化。
2、在C++程序设计中,建立继承关系倒挂的树应使用单一(或单)继承。
3、表达式cout<
end1还可表示为cout<
′\n′。
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命令中使用
iostream.h头文件。
25、在C++中,用数组、指针、和引用作为函数参数,能够将参数值带回。
26、在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的封装特性。
27、在C++中,构造派生类对象时,总是先从基类的初始化开始的。
28、拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是各个成员的复制。
29、类是用户定义的类型,具有类类型的变量称作对象。
30、在C++中,类定义一般用class关键字,不过用struct关键字也可以定义类,它们定义类的区别在于用class定义时成员默认为private,用struct定义时成员默认为public。
31、静态的成员函数没有隐含的this指针,所以,它们只能访问静态的数据成员。
32、在面向对象的程序设计中,通过类实现数据隐藏;
通过继承实现代码的复用。
33、在下面的程序段中,语句"
constint*c=&
"
和语句"
int*constd=&
b;
的含义分别是定义一个指向禁止修改的实体的指针、定义一个指针常量(不可修改的指针)。
constinta=78;
intb=28;
constint*c=&
int*constd=&
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=&