C++程序设计自考题-4
(总分100,考试时间90分钟)
一、单项选择题
(在每小题列出的四个备选项中只有一个是符合题目要求的。)
1. 下列关于构造函数的描述中,错误的是(    )
    A.构造函数可以设置默认的参数    B.构造函数在定义类对象时自动执行
    C.构造函数可以是内联函数    D.构造函数不可以重载
2. 下列关于this指针的说法,正确的是(    )
    A.this指针一定指向常量型数据    B.this指针指向的数据不可更改
    C.静态成员函数中也可以访问this指针    D.this指针本身可直接作为成员函数的返回值
3. 下列关于复制构造函数的说法中错误的是(    )
    A.复制构造函数是一种特殊的构造函数,函数名与类名相同
    B.若自定义派生类的复制构造函数,那么也必须自定义基类的复制构造函数
    C.复制构造函数只能有一个参数
    D.复制构造函数不允许在函数体中使用refurn语句
4. 下列哪种情况不属于函数重载(    )
    A.类中定义的运算符函数
    B.同一个名字,参数个数不同
    C.派生类中重新定义了一个和基类中的原型完全相同的函数
    D.类中定义了两个同名、同参数表的函数,但其中一个是常成员函数
5. 下列关于友元的描述中,错误的是(    )
    A.友元函数可以访问该类的私有数据成员
    B.一个类的友元类中的成员函数都是这个类的友元函数
    C.类与类之间的友元关系可以继承
    D.友元可以提高程序的运行效率
6. 下述静态成员的特性中,错误的是(    )
    A.静态成员函数不能利用this指针
    B.静态数据成员要在类体外进行初始化
    C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
    D.静态数据成员不是所有对象所共有的
7. 下面列出的基类中的哪部分能被派生类自动继承(    )
    A.基类中的默认构造函数    B.基类中的虚析构函数
    C.基类中的复制构造函数    D.基类中的常成员函数
8. 下列有关继承和派生的叙述中,正确的是(    )
    A.派生类不能访问基类的保护成员    B.作为虚基类的类不能被实例化
    C.派生类应当向基类的构造函数传递参数    D.虚函数必须在派生类中重新实现
9. 关于多重继承二义性的描述,错误的是(    )
    A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性
    B.—个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性
    C.解决二义性最常用的方法是作用域分辨运算符对成员进行限定
    D.派生类和它的基类中出现同名函数时,将可能出现二义性
10. 当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员,称为继承的(    )
    A.规律性    B.传递性
    C.重复性    D.多样性
11. 下列说法中,不正确的是(    )
    A.模板类的基类可以是非模板类
    B.模板类的派生类可以是模板类
    C.根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
    D.可以从构造函数参数列表推断出模板实例化参数类型
12. 下面关于类模板的派生与继承,描述错误的是(    )
    A.类模板可以继承,继承的方法与普通的类一样    B.声明模板继承之前,必须重新声明类模板
    C.模板类的基类和派生类不可以是非模板类    D.模板类的基类和派生类可以是模板类
或非模板类
13. 下列关于向量的描述中,不正确的是(    )
    A.向量是类模板,具有成员函数,但它不可以使用构造类型
    B.向量可以改变赋值目标的大小
    C.erase(iterator it)方法是删除it所指向的容器对象
    D.size()方法指返回当前向量中已经存放的对象的个数
14. 下列虚基类的声明中正确的是(    )
    A.class virtual B:public A    B.virtual class B:public A
    C.class B:public A virtual    D.class B:virtual public A
15. 关于虚函数的描述中,正确的是(    )
    A.虚函数是一个静态成员函数
    B.虚函数是一个非成员函数
    C.虚函数既可以在函数说明时定义,也可以在函数实现时定义
    D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型
16. 关于动态联编的描述中,错误的是(    )
    A.动态联编是以虚函数为基础的
    B.动态联编运行时确定所调用的函数代码
    C.动态联编调用函数操作是指向对象的指针或对象引用
    D.动态联编是在编译时确定操作函数
17. 如果一个类至少有一个纯虚函数,那么就称该类为(    )
    A.抽象类    B.虚基类
    C.派生类    D.以上都不对
18. 下列运算符在C++中不能重载的是(    )
    A.?:    B.[]
    C.>>    D.&
19. 在C++的流类库预定义的缓冲方式下,与标准错误输出设备相联接的是(    )
    A.cin    B.cout
    C.cerr    D.clog
指针调用成员函数20. 下列叙述中,错误的是(    )
    A.bad()函数功能表示如果进行非法操作,返回true,否则返回false
    B.ios_base::in打开文件用于输入(输入流的打开模式)
    C.ios_base::ate打开一个已有的输入或输出文件并查到文件尾
    D.ios_base::out打开文件进行读操作
二、填空题
21. 在类定义时,如果没有定义任何构造函数,则编译器自动生成一个______构造函数。
22. 析构函数名是在类名前加上______符号,用来释放对象所占的内存空间。
23. 设A为test类的对象且赋有初值,则语句test B(A);表示______。
24. 静态数据成员初始化时,前面不加______关键字,以免与一般静态变量或对象混淆。
25. 在类中声明const数据成员时,只能通过______的方式来对该成员进行初始化。
26. 在建立派生类对象时,先执行______的构造函数。
27. 赋值兼容规则是指在公有派生情况下,基类对象______(能、不能)使用派生类对象。
28. 在继承机制下,当对象消亡时,编译系统执行析构函数的顺序是______。
29. 访问控制权限有public、private和______3种。
30. 定义派生类时,若不使用类关键字显式地规定采用何种继承方式,则默认方式为______继承。
31. 用来派生新类的类称为______,而派生出的新类称为它的子类或派生类。
32. 类模板中声明的类称为______。
33. 返回向量中的第1个对象的成员函数是______。
34. 在C++中,利用向量类模板定义一个具有20个int的向量A,其元素均被置为5,实现操作的语句是______。
35. 在C++中,可将多态性分为:编译时的多态性和______。
36. 至少包含一个______函数的类称为抽象类。
37. 运算符的重载函数必须使用______关键字。
38. ______类是从iostream类公有派生的,提供从文件中提取数据或把数据写入到文件的各种操作。
39. 重载的运算符保持其原有的运算符个数、______不变。
40. 表达式operator+(x,y)还可以表示为______。
三、改错题
41. #include<iostream.h>
        class A
        public:
          virtual~A()
          virtual void f()