浙江大学继续教育学院试卷
(面向对象)
一、选择题
1. 在面向对象的程序设计中,定义类时保留字是用( B ) A. type
B. class
C. private
D. public
2.不是面向对象系统的特性是( C ) A.封装性
B. 继承性
C. 保密性
D. 多态性
3. 面向对象程序的主要结构特点之一( A ) A.程序一般由类的定义和类的使用两部分组成。 B。程序一般由函数定义和函数的使用两部分组成。 C. 程序一般由变量的定义和变量的使用两部分组成。 D. 程序一般由对象的定义和对象的使用两部分组成。 4.类的概念是( D ) A. 所有对象的集合。
B. 同一类记录的集合。
D. 对一组具有共同的属性特征和行为特征的对象的抽象。
C. 同一类数据的集合。
5. 对象是现实世界中的一个实体,不是其特性的是( A ) A. 必须有一个关键字。 C. 有属性。
B. 每个对象必须有一个名字,以示区别。
D. 有操作。
6.关于成员函数特征的下述描述,正确的是( C )
A. 成员函数一定是内置函数。
B. 成员函数一定要在类外定义完整。
C. 成员函数可以设置参数的默认值。D. 成员函数一定要在类内定义完整。 7.下列的各函数中,不是本类的成员函数的是( D )
A. 构造函数
B. 拷贝构造函数
C. 默认参数的构造函数 D. 友元函数
8.不是构造函数的特征是( B ) A. 构造函数与类同名。
B. 构造函数必须说明返回类型。 D. 在创建对象时被执行。
C. 构造函数可以有形式参数。 9.析构函数的特征是( C )
A.析构函数可以有多个参数。
B.析构函数只能在类体内定义。
C.一个类中只能定义一个析构函数。 D.一个类中能定义多个析构函数。 10.类的友元可以访问该类的( B )
A. 只能是数据成员
B. 所有成员
C. 只能是成员函数
D. 只能是公有成员
11.基类和派生类的相互关系正确的是( A ) A. 从基类到派生类称为派生。 C. 从派生类到基类称为派生。
B. 从基类到派生类称为继承。 D. 派生类包含了基类。
12.一个基类可以派生出二个派生类,这种继承关系还是称为( C ) A.多继承
B. 多重继承
C. 单继承
D. 双重继承
13.基类成员在派生类中的访问属性描述中,错误的是( D )
A. 无论哪种派生,基类的公有成员允许派生类的成员函数访问。 B. 无论哪种派生,基类的保护成员允许派生类的成员函数访问。 C. 无论哪种派生,基类的私有成员不允许派生类的成员函数访问。 D. 无论哪种派生,基类的保护成员不允许派生类的成员函数访问。 14.派生类构造函数的执行顺序正确的是(A )。
浙江大学远程教育学院试题卷(模拟试卷) 第1页 共6页
A. 先执行基类的构造函数,再执行派生类的构造函数。 B. 先执行派生类的构造函数,再执行基类的构造函数。
C. 先执行派生类构造函数的函数体,再执行基类构造函数的函数体。 D. 以上都不是。
15.不可重载的函数的是( B ): A.普通的成员函数 B. 析构函数 16.面向对象的多态性不正确的是( A )。 A. 不同名字的函数定义相同功能。 C. 函数允许同名。
B. 同一种运算符定义不同的操作。
D. 派生类中可出现与基类同名的函数。 C. 友元函数
D. 外部函数。
17.可定义作运算符重载函数的是( A )
A. 类以外的函数 B. 构造函数 18.对虚基类的论述,正确的是( D )
A. 基类中没有数据成员才考虑虚基类。 C. 基类没有类名才考虑虚基类。
B. 基类中没有成员函数才考虑虚基类。
C. 析构函数
D. 主函数。
D. 一个派生类有多个父类,而这多个父类又有一个共同基类,才考虑设置虚基类。 19.关于抽象类的下列描述中,错误的是( A )
A.如果一个类至少有一个纯虚函数,那么该类为抽象类。 B.抽象类只能用作其他类的基类,不能建立抽象类对象。 C. 抽象类可以用来定义指针。
D. 抽象类可以作为函数的参数类型。
20.C++用cout 和 cin 进行输出/输入操作时需要包含文件是( B )
A. fstream.h B. iostream.h
二.概念填空题(每空 1 分,共20分)
1. 面向对象程序设计是不同于传统程序设计的一种新的程序设计范型。面向对象的程序设计被认为是程序设计方法学的一场 实质性的革命 (在导学中)。
2. 面向对象(O-O)程序设计是一种新的程序设计范型。这种范型的主要特征是: 程序=对象+消息 3.C++中类的定义内部,private: 叫 私有 ,protected: 叫 保护 ,
public: 叫 公有 。
4. 定义了类A,在程序中如出现: A obj, ob[10], *p; 的语句,则obj是 对象 、ob是 对象数组 、p是 对象指针 。
5. C++中,运算符 new 用于 动态分配 内存, 运算符 delete用于 动态释放 内存。
6.C++中,函数说明为void fun(int &i)的引用叫 参数引用 ,函数说明为void &fun(int i)的引用叫 返回值引用 。
7.在一个类定义中,可以声明友元,友元可以是三种友元。 非成员友元函数 、 成员友元函数、 和 友元类。
8.类外的函数作运算符重载时,只能访问类的 公有 成员,而用类的友元运算符函数或成员运算符函数可以访问类的 所有 成员。
9.C++的多态性有 静态 的多态性和 动态 多态性。
10.模板是实现代码重用机制的一种工具,分为 函数 模板和 类 模板。
三、阅读下列程序,写出运行结果(每题5分,共20分) 1. 程序
#include
C. stdio.h
D. math.h
浙江大学远程教育学院试题卷(模拟试卷) 第2页 共6页
}
void fun2(int &i) { i += 10; }
void main( ) { int k=5; fun1(k); cout<<\ fun2(k);
cout<<\ k=\} 2. 程序
【答案:】x=5 y=0 dist=25
#include
class Point {
public:
Point( int x1=0, int y1=0) {
x=6 y=7 dist=85
x=x1; y=y1; d=x*x+y*y; }
void print(){
cout<<\ y=\ dist=”< int x, y, d; }; void main() { Point p1(5),p2(6,7),*p; p=&p1; p->print(); p2.print(); } 3. 程序 #include Str( char *pi ) { p=new char[strlen(pi)+1]; strcpy(p,pi); } void show() { } cout<<\字符串: \ void operator ++(); 浙江大学远程教育学院试题卷(模拟试卷) 第3页 共6页 }; void Str::operator ++() { Str temp(\ temp.p=new char[2*strlen(this->p)+1]; strcpy(temp.p,this->p); strcat(temp.p,”ABCD”); this->p=new char[2*strlen(this->p)+1]; strcpy(this->p,temp.p); } void main() { Str T1(\ ++T1; } 4.程序4 【答案:】 现在进入 Base 基类的构造函数 现在进入 Derive 派生类的构造函数 40 现在进入 Derive 派生类的析构函数 现在进入 Base 基类的析构函数 #include public: Base(int n) { cout << \现在进入 Base 基类的构造函数\\n\ i=n; } ~Base( ) { cout <<\现在进入 Base 基类的析构函数\\n\void showi( ) { cout << i << endl; } private: int i; }; class Derive:public Base { public : Derive(int n, int m):Base(m) { cout << \现在进入 Derive 派生类的构造函数\\n\ j=n; } ~Derive( ) { cout <<\现在进入 Derive 派生类的析构函数“< int j; }; T1.show(); 浙江大学远程教育学院试题卷(模拟试卷) 第4页 共6页
相关推荐: