面向对象期中考试试卷(2012)

更新时间:2024-01-07 03:07:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

班 级 学 号 姓 名 西南交通大学2011-2012学年第(2)学期考试

密封装订线 密封装订线 密封装订线 课程代码 0471004 课程名称 面向对象程序设计 考试时间90分钟

题号 得分 一 二 三 四 五 总成绩

阅卷教师签字:

答题说明:① 考试形式:闭卷;② 考试时间:90分钟; ③ 全部答案请写在答题卷上,试题卷上作答无效。 ④ 假设所有程序代码中的头文件和命名空间都已经具备。 一、填空题(每空1分,共10分)

1. 运算符重载函数既可以定义为类的友元函数,也可以定义为类的 【1】 函数。 2. 含有纯虚函数的类称为 【2】 。

3. 面向对象的三大机制是:是封装、 【3】 和多态 。

4. 在C++程序中,动态申请存储空间是采用 【4】 ,释放存储空间采用 【5】 。 5. 对于【6】继承方式,基类中访问属性为public成员和【7】成员在子类中的访问属性都是private。

6. 后置++运算符被重载为友元函数时,其参数的个数为 【8】 个。

7. 在C++中,当定义一个class时,成员的默认访问权限是【9】,而struct中成员的默认访

问权限是【10】。.

二、单项选择题(每空2分,共24分)

1. C++语言建立类族是通过 ( )

(A)类的嵌套 (B) 类的继承 (C) 虚函数 (D) 抽象类 2. 关于new运算符的下列描述中,下面那一项 ( )是错的。 (A) 它可以用来动态创建对象和对象数组;

(B) 使用它创建的对象或对象数组可以使用运算符delete删除; (C) 使用它创建对象时要调用构造函数; (D) 使用它创建对象数组时必须指定初始值。 3. 有如下两个类定义

class XX {

private:

double x1; double x2;

A卷-1

protected:

public:

double x3;

};

class YY: protected XX { private: double y1; protected:

double y2; public:

double y3;

};

在类YY中受保护成员的数量是 ( ) (A) 1 (B) 2 (C) 3 (D) 4

4. 在C++中,以下不能重载的运算符是 ( ) 。

(A) * (B) = (C) [ ] (D) :: 5. 在下面函数声明中,能与“void fun(int a, int b);”构成重载关系的是( ) (A) int fun(int x, int y); (B) void fun(int a, char b); (C) float fun(int a, int b, int c = 3); (D) void fun(int a, char, int b = 5);

6. 一个类的友元函数能够通过( )访问该类的所有成员

(A) 静态数据 (B) 析构造函数

(C) this指针 (D) 对象

7. 以下正确的描述是()

(A) 不允许设置函数参数的缺省值

(B) 设置参数的缺省值只能在定义函数的时候设置 (C) 设置参数缺省值时,应按照从右向左的顺序设置 (D) 设置参数缺省值时,应该全部参数都设置 8. 下面函数中,哪个不是clock类的成员函数 ? ( )

class clock {

public:

void clock(); void ?clock(); friend int setTime(); inline void showTime();

}

(A) clock (B) ?clock (C) setTime (D) showTime 9. 如果类A被声明为类B的友元,则( )。 (A)类A的成员即类B的成员 (B)类B的成员即类A的成员

(C)类A的成员函数不得访问类B的成员 (D)类B不一定是类A的友元10. 有下面的类定义:

class A{

A卷-2

int x; public:

virtual void f(){cout<<\ virtual void g(int a){cout<

如果创建A类对象a,那么sizeof(a)的值与( )相同。

(A) sizeof(int) (C) sizeof(int)+2*sizeof(void *)

11. 关于构造函数,下面说法错误的是:

(B) sizeof(int)+sizeof(void *) (D) 不能确定

(A) 对用户来说,是否调用构造函数不可选,它由编译器在对象定义时自动完成。 (B) 构造函数也是类的一个成员函数,具有一般成员函数的特征,也可以被重载。 (C) 拷贝构造函数的作用是使用一个已经存在的对象去初始化一个新的同类的对象。 (D) 构造函数的函数名与类名相同,而且有返回值。 12. 下面是类shape的定义: class shape

{ public: virtual void Draw()=0; }; 下列关于shape类的描述中正确的是( ) (A) 类shape是虚基类 (B) 类shape是抽象类

(C) 类shape中的Draw函数声明有误

(D) 语句“shape s;”能够建立shape类的一个对象s

三、判断正误题(每题1分,共12分)

1. 一个子类具有不止一个父类的继承关系称为多继承。 2. C++中,static数据成员不占用对象空间。

3. 一个类定义中可以没有析构函数,但必须有构造函数。 4. 运算符重载函数的参数可以具有缺省值。

5. 继承关系具有整体部分结构,组合关系具有泛化特化结构。

6. 虚继承中,派生类构造函数既要调用直接直接基类的构造函数,也要调用虚基类的构造函数。 7. 不能定义抽象类的对象,但可以定义抽象类的指针。 8. this指针的值是可以通过编程改变的。

9. 某运算符用友元函数实现了重载,则该运算符一定可以用类的成员函数实现重载。 10. 析构函数可以是虚函数,构造函数不能是虚函数。 11. 拷贝构造函数的参数一定要具有引用类型。

12. 子类对象可以赋值给父类对象,但父类对象不能赋值给子类对象。

四、阅读程序题(每题8分,共24分)

1. 写出下面程序的运行结果。

A卷-3

class A{ public:

int f(int a){cout<<\ int g(int a){cout<<\};

void main( ){ A a; cout<

A(int a=0){x=a;cout<<\ A(A &a){x=a.x;cout<<\ int getx(){return x;} ~A(){cout<<\};

A f(A a,A b){A c(a.getx()+b.getx()); return c;} void main( )

{ A a(1),b(2),c; c=f(a,b); cout<

class B1{public:B1(int i) {cout<<\class B2{public:B2(int j) {cout<<\class B3{public:B3() {cout<<\ class C:public B1,public B2,public B3 {public: };

void main( ) { C obj(1, 2 , 3 , 4); }

C(int a, int b, int c, int d):B1(c),memberB2(a),memberB1(d),B2(b) {} B1 memberB1; B2 memberB2; B3 memberb3; private:

五、程序设计题(每题15分,共30分)

1、编写程序定义point类来描述平面上的点,包含私有数据成员x和y(double类型)。将运算符“+”重载为其成员函数,实现两个point对象的相加(x与x相加,y与y相加)。给出完整的类定义、构造函数、拷贝构造函数和析构函数。 (不要求给出主程序)

2、用point类公有派生一个Line类,其数据成员为起点和终点。给出完整的Line类定义,其中包括构造函数、拷贝构造函数和析构函数。

A卷-4

线 订 装 封 密 名 姓 线 订 装 封 密号 学 线 订 装 封级密 班

西南交通大学2011-2012学年第(2)学期考试

课程代码 0471004 课程名称 面向对象程序设计 考试时间90分钟

题号 一 二 三 四 五 总成绩 得分

阅卷教师签字:

注:答题纸不够请写在答题纸的背面。 一、填空题(1?10分)

(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) 二、单项选择题(2?12分)

1 2 3 4 5 6 7 8 9 10 11 12 三、判断题(1?12,共12分)

1 2 3 4 5 6 7 8 9 10 11 12 四、阅读程序题(8?3,共24分)

A卷-5

五、程序设计题(15?2,共30分)

A卷-6

本文来源:https://www.bwwdw.com/article/5w7x.html

Top