当前位置:首页 > 面向对象程序设计试题
成都信息工程学院考试试卷
2007 ——2008 学年第 2 学期
课程名称: 面向对象程序设计
使用班级: 计本071、072、073、074、075 、076
系名____________班级____________姓名____________学号____________ 试卷形式:开卷 闭卷 √ . 试题 得分 一 二 三 四 五 六 七 八 九 十 总分 一、填空题(每空1分,共15分) 1. C语言是面向过程的程序设计语言;C++语言是面向 的程序设计语言。 2. 面向对象程序设计最核心的三个概念是______________、______________和______________。
3. C++类的组成包括数据成员和______________,友元_____(是、不是)该类的成员函数。友元关系有______________和______________两种。 4. 一个类中至多有_________个析构函数。 5. 若有: float i; float &j=i; i=2.0; j=i+1;
则i=__________,j=__________。
6. C++中类的继承方式有____________继承、保护继承和____________继承三种。
7. 如果一个类中至少有一个纯虚函数,则该类称为________________。 8. 进行文件操作时,需要包含头文件________________。
密封线内不答题 二、单项选择题(每小题2分,共30分)
1、C++中,关于设置参数默认值的描述,正确的是( )。
A. 不允许设置参数的默认值 B.只能设置一个参数的默认值
C.设置参数默认值时,可以部分参数设置 D.设置参数默认值时,必须全部参数都设置 2、 引入内联函数的主要目的是( )
A. 缩短程序代码,少占用内存空间
B. 既可以保证程序的可读性,又能提高程序的运行效率 C . 占用内存空间少,执行速度快
——第1页——
D . 使程序的结构比较清晰 3、 重载函数是( )
A. 以函数参数来区分,而不用函数的返回值来区分不同的函数 B. 以函数的返回值来区分,而不用函数参数来区分不同的函数 C. 参数表完全相同而返回值类型不同的两个或多个同名函数 D . 参数表和返回值类型都必须是不同的两个或多个同名函数 4、 一个类的静态数据成员所表示的属性确切地说( )。
A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 类和友元的属性
5、 当保护继承时,基类的( )在派生类中成为保护成员,不能通过派生类的对象来直
接访问该成员。
A. 任何成员 B. 公有成员和保护成员 C. 保护成员和私有成员 D. 私有成员 6、 关于构造函数,下列说法不正确的是( )。
A.构造函数名字和类名相同 B.构造函数在创建对象时自动执行 C.构造函数无任何函数返回类型 D.构造函数有且只有一个 7、对于类中定义的成员,其隐含访问权限为______。 A.public B.protected C.private D.static
8、对于在类中定义的静态数据成员,下面正确的说法是( ) A.该类的每个对象中都有一个静态数据成员 B.对象创建时产生 C.在类外进行初始化
D.既可以在类外初始化,也可以在类内初始化
9、下列运算符中,在C++中不能重载的是( )。 A. [ ] B. ?: C. ++ D. =
10、有如下的对类“CSample”的说明,其中( )是错误的。 class CSample { A.int a=23; B.CSample(); public:
C.CSample(int val); D.~ CSample(); }
11、已知类A中的一个成员函数的说明如下: void Set(A &a);
则该函数的参数“A &a”的含义是( )
A.指向A的指针为a B.将变量a的地址赋给类A
C.类A对象引用a用作函数的形参 D.变量A与a按位与后作函数参数
——第2页——
____________号学______ __题___答_名不姓_内___线___封____密_级班____________名系
12、若类A和类B的定义如下: class A { public: int i,j; void get(); };
class B:A { int i,j; protected: int k; public:
void make(); };
void B::make() { k=i*j; } 则其中( )是非法的表达式。 A.void get(); B.int k;
C.void make(); D.k=i*j;
13、下面的主程序中,语句( )是错误的。 class A { int i; public:
virtual void fun()=0; A(int a) { i=a; } };
class B { int j; public:
void fun() { cout<<”B::fun()\\n”; } B(int b,int c) :A(b) { j=c; } };
void main() A.{ A a(5); B.A *pa; C.B b(7); D.B *pb; }
14、拷贝(复制)构造函数的作用是( )
——第3页——
A.进行数据类型的转换 B.用对象调用成员函数
C.用对象初始化对象 D.用一般类型的数据初始化对象
15、 下面的程序是关于函数重载的,假定A,B,C,D是它们可能的输出之一,其中正确的输出是( )。
A. 25 10 B. 20 10 C. 20 11.04 D. 20 14.076 源程序如下:
#include
return n1*n2; }
float Multiply(int f1, float f2) {
return f1*f2; }
void main( ) {
int a1=10; int a2=2.5; float b1=2.55; float b2=5.52;
cout< 三、判断题(每题1分,共10分) 1. 说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返 回值类型就可以了。( ) 2. 所有的表达式都有值。( ) 3. 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修 改所带来的编译工作量。( ) 4. 类的静态数据成员需要在定义每个类的对象时进行初始化。( ) 5. 基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能 被其它的函数访问。( ) 6. 当将一个类S定义为另一个类A的友元类时,类S的所有成员函数都可以直接访 问类A的所有成员。( ) 7. 当函数的返回值是数组类型的,传递的是数组第一个元素的地址。( ) 8. 如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么, 这个函数自动继承基类中虚函数的特性。( ) 9. 字符串’hello,world”在内存中存放时,占用11个字节的空间。( ) ——第4页——
共分享92篇相关文档