c++期末考试判断题+填空题 下载本文

内容发布更新时间 : 2024/6/27 3:14:37星期一 下面是文章的全部内容请认真阅读。

1

判断题

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.n和m.*p (正确)

第 1 页 共 1 页

2

33、指向对象的指针与对象都可以作函数参数,但是使用前者比后者好些。(正确) 34、对象引用作函数参数比用对象指针更方便些。(正确)注:不需要间接访问 35、对象数组的元素可以是不同类的对象。(错误) 36、对象数组既可以赋初值又可以赋值。(正确)

37、指向对象数组的指针不一定必须指向数组的首元素。(正确)注:指针可以移动。 38、一维对象指针数组的每个元素应该是某个类的对象的地址值。(正确) 39、const char* 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、对单目运算符重载为友元函数时,说明一个形参;重载为成员函数时,不能显式说明形参。(错误)

第 2 页 共 2 页

3

注:前面描述对的。此题不全面,应该是“重载为成员函数时,除了后置++、--,不能显式说明形参。本题一般理解也可以按上面描述,此题考试不扣分。 66、重载运算符保持原运算符的优先级和结合性不变。(正确) 67、虚函数是用virtual关键字说明的成员函数。(正确) 68、构造函数说明为纯虚函数是没有意义的。(正确) 69、抽象类是指一些没有说明对象的类。(错误)//抽象类是指一些“不能”说明对象的类。 70、动态联编是在运行时选定调用的成员函数的。(正确)

1. 重载流操作符<<和>> 时,如果第一个参数的类型为ostream 和istream,那么这个重载函 数既可以用于标准输入输出流,也可以用于文件流上。

对,ostream 和istream是标准输入输出流、文件流、字符串流的基类

2. 在同一个类中,可以定义重载的成员函数 void f(int);和virtual void f(int); 。 错,这属于重复定义

3. 抽象类不会产生实例,所以不需要有构造函数。 错,被派生时需要它的构造函数 4. 类A有一个非静态的成员函数f,其函数原型是:void A::f( ) const,则该函数被调用时, 一定是通过类A或类A的某后裔类的一个用const修饰符说明的常量对象调用的。 错,常函数可以由变量对象或常量对象调用

5. 异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。 错,可以在外层捕获,并且这是最常见的用法

6. 只要程序中没有A a1 = a2; 和A a1(a2); 形式的代码,类A的拷贝构造函数就不会被调 用。

错,参数传递或函数返回时也调用拷贝构造函数

7. 在protected继承方式下,派生类对象的指针不能直接转换成指向基类对象的指针。 对,否则基类中的公有成员由不可见变为可见,权限被放大

8. 若静态成员函数中调用了一个函数f,那么f 一定不是虚函数。 对,静态成员函数不能是虚函数,因为虚函数入口需要在保存在对象中的虚函数 表中,而静态成员函数不属于对象。 9. 若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该 数据成员。

对,没有别的办法

10. 构造函数的函数体中,不能使用return语句;但在实现该类的自动类型转化函数时,必须 有return 语句。 对

1、C++中标识符内的大小写字母是没有区别的。 (F) 2、C++是一种以编译方式实现的高级语言。 (T) 3、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。 ( F) 4、在私有继承中,基类中所有成员对派生类都是不可见的。 ( F) 5、返回值类型、参数个数和类型都相同的函数也可以重载。 (F)

第 3 页 共 3 页