一、 填空题(每空1分,共14分)
1、 观看以下程序:
class point{
public:
_
_
_
_
_
_
_
_
_
_
_
_
号
学
_
_
_
_
_
_
_
_题_
_
_答
_
名不
姓
_内
_
_
_线
_
_
_封
_
_
_
_密
_
级
班
_
_
_
_
_
_
_
_
_
_
_
_
名
系 void show() {cout<<”point”<<endl;} }; void main() { point p1; point *p; p=&p1; ______p1.show()_________//通过对象p1访问show函数 _______p.show()_______//通过指针p访问show函数 } 2、 在C++类中可以包含___公共___、___保护_____和___私有__三种具有不同访问控制权的成员。 3、 定义类时,在类头中将使用关键字__class _____来表示类定义的开始。 4、 如果一个类中至少有一个纯虚函数,则该类称为_______抽象类_________。 5、 C++类的组成包括数据成员和______成员函数________,友元__不是___(是、不是)该类的成员函数。 6、 友员函数是用关键字_____friend_______修饰的非成员函数。 7、 若有: int i; int &j=i; i=10; j=i+1; 则i=____11_____,j=___11______。 8、 new的功能是_______分配内存空间______,delete的功能是______释放内
存空间______________。
二、 选择题(每小题1.5分,共30分)
1、下列特性中不是面向对象程序设计语言所特有的是( D )。
(A)数据封装 (B)继承(C)多态性 (D)模板
2、( B )是给变量取一个别名,它引入了变量的同意词。
——第1页——
(A)指针 (B)引用 (C)枚举 (D)结构
(D)protected 3、类成员的访问权限中,(c )只能被本类的成员函数和其友元函数访问。 (A)share (B)public (C)private
(A)构造函数名字和类名相同
(B)构造函数在创建对象时自动执行
(C)构造函数无任何函数返回类型
(D)构造函数有且只有一个
5、派生类可以访问其基类的( D )。
(A)公有成员 (B)保护成员
(C)私有派生 (D)公有和保护成员
6、下列关于运算符重载的描述中,错误的是(B )。
(A)运算符重载不可以改变操作数的个数
(B)运算符重载不可以改变运算符的功能
(C)运算符重载不可以改变结合方向
(D)运算符重载不可以改变运算优先级
7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是( B )
(A)面向过程 (B)面向对象 (C)安全性 (D)复用性
8、对于类中定义的成员,其隐含访问权限为(C )。
A.public B.protected
C.private D.static
9、下面有关重载函数的说法中正确的是( C )
(A)重载函数必须具有不同的返回值类型; (B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表 (D)重载函数名可以不同;
10、有如下的对类“CSample”的说明,其中(A )是错误的。
class CSample {
A.int a=23;
B.CSample();
public:
C.CSample(int val);
D.~ CSample();
11、在int a=3,int *p=&a;中,*p的值是(D )
A.变量a的地址值 B.无意义
C.变量p的地址值 D.3
12、每个类( C )构造函数。
(A)只能有一个 (B)只可有公有的 4、关于构造函数,下列说法不正确的是( D )。
——第2页——
(C)可以有多个 (D)只可有缺省的
13、在一个类中可以对一个操作符进行(D )重载。
(A)1 种 (B)2 种以下 (C)3 种以下 (D)多种
14、在公有继承的情况下,基类非私有成员在派生类中的访问权限(B )
(A) 受限制 (B)保持不变 (C)受保护 (D)不受保护
_
_
_
_
_
_
_
_
_
_
_
_
号
学
_
_
_
_
_
_
_
_题_
_
_答
_
名不
姓
_内
_
_
_线
_
_
_封
_
_
_
_密
_
级
班
_
_
_
_
_
_
_
_
_
_
_
_
名
系15、应在下列程序划线处填入的正确语句是( C ) #include <iostream.h> class Base {public: void fun(){cout<<"Base::fun"<<ENDL;} }; class Derived:public Base { void fun() {_____________//显示调用基类的函数fun() cout<<"Derived::fun"<<ENDL; } }; (A)fun(); (B)Base.fun(); (C)Base::fun(); 16、执行下面的程序将输出( A ) #include <iostream.h> class BASE{ char c; public: BASE(char n):c(n){} virtual ~BASE(){cout<<c;} }; class DERIVED:public BASE{ char c;
public:
DERIVED(char n):BASE(n+1),c(n){}
~DERIVED(){cout<<c;}
};
int main()
{DERIVED a('X');
——第3页—— D)Base->fun(); (
return 0;
}
(A)XY (B)YX (C)X (D)Y
17、下面描述中,表达错误的是( B )
(A)公有继承时基类中的public成员在派生类中仍是public的