};
voidmain()
{A*a=newC;
a->g();
deletea;
}
Ascons.
Asf().
Bscons.
Cscons.
Csf().
Csdes.
Bsdes.
Asdes.
六、程序设计题(本大题共1小题,共10分)
1.已知交通工具类定义如下。
要求:
(1)实现这个类;
(2)定义并实现一个小车类car,是它的公有派生类,小车本身的私有
属性有载人数,小车的函数有init(设置车轮数,重量和载人数),getpassenger(获取载人数
),print(打印车轮数,重量和载人数)。
classvehicle
{protected:
intwheels;当一个类的某个函数被说明为virtual时,该函数在该类的所有派生类中()
A.都是虚函数
B.只有被重新说明时才是虚函数
C.只有被重新说明为virtual时才是虚函数
D.都不是虚函数
2.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()
A.constchar*p=“ABCD”;
B.char*constp=“ABCD”;
C.charconst*p=“ABCD”;
D.constchar*constp=“ABCD”;
3.函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为()
A.1
B.2
C.4
D.5
4.设有函数模板
template
QSum(Qx,Qy)
{return(x)+(y);}
则下列语句中对该函数模板错误的使用是()
A.Sum(10,2);
B.Sum,;
C.Sum,;
D.Sum(“AB”,”CD”);
5.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针
,则p->A:
:
func()将()
A.调用类A中的函数func()
B.调用类B中的函数func()
C.根据p所指的对象类型而确定调用类A中或类B中的函数func()
D.既调用类A中函数,也调用类B中的函数
6.在面向对象的程序设计中,首先在问题域中识别出若干个()
A.函数
B.类
C.文件
D.过程
7.已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明()
A.f1和f2都是静态函数
B.f1不是静态函数,f2是静态函数
C.f1是静态函数,f2不是静态函数
D.f1和f2都不是静态函数
8.下列有关模板和继承的叙述正确的是()
A.模板和继承都可以派生出一个类系
B.从类系的成员看,模板类系的成员比继承类系的成员较为稳定
C.从动态性能看,继承类系比模板类系具有更多的动态特性
D.相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系
9.有关C++编译指令,以下叙述正确的是()
A.C++每行可以写多条编译指令
B.#include指令中的文件名可含有路径信息
C.C++的编译指令可以以#或C++中不管#if后的常量表达式是否为真,该部分都需要编译
10.在C++中不返回任何类型的函数应该说明为()
A.int
B.char
C.void
D.double
11.若Sample类中的一个成员函数说明如下:
voidset(Sample&a),则Sample&a的含义是()
A.指向类Sample的名为a的指针
B.a是类Sample的对象引用,用来作函数Set()的形参
C.将a的地址赋给变量Set
D.变量Sample与a按位与的结果作为函数Set的参数
12.下列关于静态数据成员的描述中正确的是()
A.静态数据成员是类的所有对象所共有的
B.静态数据成员要在构造函数内初始化
C.类的每个对象有自己的静态数据成员
D.静态数据成员不能通过类的对象调用
13.在编译指令中,宏定义使用哪个指令()
A.#if
B.#include
C.#define
D.#error
14.类的析构函数是对一个对象进行以下哪种操作时自动调用的是()
A.建立
B.撤销
C.赋值
D.引用
15.关于new运算符的下列描述中,错误的是()
A.它可以用来动态创建对象和对象数组
B.使用它创建的对象或对象数组可以使用运算符delete删除
C.使用它创建对象时要调用构造函数
D.使用它创建对象数组时必须指定初始值
16.如果类A被说明成类B的友元,则()
A.类B不一定是类A的友元
B.类B的成员即类A的成员
C.类A的成员即类B的成员
D.类A的成员函数不得访问类B的成员
17.假定一个类的构造函数为A(intaa,intbb){a=aa++;b=a*++bb;},则执行Ax(4,5);语句
后,和的值分别为()
A.4和5
B.4和20
C.4和24
D.20和5
18.下列运算符中,在C++语言中不能重载的是()
A.*
B.>=
C.:
:
D./
19.C++语言建立类族是通过()
A.类的嵌套
B.类的继承
C.虚函数
D.抽象类
20.在C++语言中,数据封装要解决的问题是()
A.数据的规范化
B.便于数据转换
C.避免数据丢失
D.防止不同模块之间数据的非法访问
二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案
。
错填、不填均无分。
1.若要使用string类,需要引入的头文件是。
2.在函数前面用_inline__保留字修饰时,则表示该函数表为内联函数。
3.向量操作方法中___方法返回向量中的第一个对象。
4.C++派生类使用两种基本的面向对象技术:
第一种称为性质约束,即对基类的性质加以限制
;第二种称为_性质扩展__,即增加派生类的性质。
5.重载的运算符保持其原有的_操作数__、优先级和结合性不变。
6.编译时的多态性通过_重载__函数实现。
7.预处理语句有三种,分别是宏定义、文件包含和_条件编译__。
8.构造函数、析构函数和友元函数中,不是该类成员的是_友元函数__。
9.控制格式输入输出的操作中,函数_setw(int)__是设置域宽的。
要求给出函数名和参数类型)。
10.派生类的成员一般分为两部分,一部分是_从基类继承的成员__,另一部分是自己定义的新成员。
11.C++中ostream的直接基类_ios__。
12.vector的___方法返回向量中的最后一个对象。
13.执行下列代码
inti=230;
cout<<"i="<程序的输出结果为_i=E6__。
14.在C++中有两种参数传递方式即值传递和_引用__传递。
15.使用new为int数组动态分配10个存储空间是_newint[10];__。
16.面向对象的四个基本特性是多态性、继承性、和封装性_抽象__。
17.定义虚函数所用的关键字是_virtual__。
18.执行下列代码
cout<<“oct:
”<程序的输出结果是_oct:
42__