面向对象程序设计C++模拟试卷 联系客服

发布时间 : 星期日 文章面向对象程序设计C++模拟试卷更新完毕开始阅读

char *name; int age; public:

Person(char *s, int i) { name = new char[length]; strcpy(name, s); age = i; }

~Person() { delete name; } void print() {

cout << \ } };

class Student : public Person { private:

char *sNo; public:

Student(char *s, char *n, int i) : Person(s, i) { sNo = new char[NO_LENGTH]; strcpy(sNo, n); }

~Student() { delete sNo; } void print() { cout << endl; Person :: print();

cout << \ } };

class Teacher : public Person { private:

char *title; public:

Teacher(char *s, char *t, int i): Person(s, i) {

title = new char[TITLE_LENGTH]; strcpy(title, t); }

~Teacher() { delete title; } void print() { cout << endl; Person :: print();

cout << \ } };

面向对象程序设计C++模拟试卷

考试时间:90分钟

一.简答题(10分,每题2分)

1.1(3分) C++语言中的break语句和continue语句的作用分别是什么?

答案:break语句的作用是退出其所在的循环(1分);continue语句的作用是结束本次循

环,转去判断是否还需要再执行下一次循环(2分)。

1.2(3分) 什么是函数重载?实现函数重载的原则是什么?

答案:函数重载是指同一个作用域内相同的函数名对应着不同的实现。在调用时,系统将根

据调用函数的实参情况来选择某个实现(2分)。

实现函数重载的原则是要求被重载的同名函数中,其参数个数、类型或顺序必须有所不同(1分)。

1.3(4分)什么是this指针?它有何作用?

答案:this指针是系统自动生成的,指向当前对象的指针。(1分)

它的用途在于直接用它可以表示当前对象的指针,而使用*this可以表示当前对象。但程序中出现一个对象调用某个成员函数时,系统自动生成一个指向该对象的指针this,并将该对象的地址值赋给它。一般情况下,this指针被隐含使用,但有时也可以显式使用。(3分)

二.填空题(20分,每空2分)

2.1 纯虚函数就是 的虚函数,至少包含一个纯虚函数的类称为 。 答案:没有函数体,抽象类

2.2 C++语言引入了异常处理机制,用 语句“抛出”异常,然后用相应的语句 _ 捕获被“抛出”的异常,并做出相应的处理。 答案:throw,catch

2.3假设x = 5,y = 0,z = 3,则表达式 !x || y++ && z 的值为 ,执行表达式后y的值为 。 答案:0,1

2.4 下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。 class MyClass { private: int *x; public:

MyClass(int a); ~MyClass(); };

MyClass :: MyClass(int a) { ; } MyClass :: ~MyClass() { ;} 答案:x = new int a,delete x

2.5 C++语言中,运算符重载一般采用两种形式: 和 。 答案:成员函数,友元函数(答案顺序可以交换)

三.单项选择题(20分,每题1分)

3.1 在下面的程序中,若实参a与形参x以引用传递的方式传递信息,实参b与形参y以值传递的方式传递信息,那么从函数compute返回主程序后,a和b的值分别为 。

Main Program void compute(x, y)

a := 1; b := 2; compute(a, b); x := x + 2 * y; y := 2 * x + y; return ;

A. 5和2 答案:A

3.2下列语句中,错误的是 。

A. int i, *ptr = &i;

B. int i; int *ptr; i = *ptr; D. int i = 5; int *ptr; *ptr = &i;

B. 5和12

C. 1和2

D. 1和12

C. int *ptr; ptr = 0; 答案:B

3.3 下列对break语句的描述中,不正确的是 。

A. break语句可以用在循环体中,它将使执行流程跳出本层循环

B. break语句可用在switch语句中,它将使执行流程跳出当前switch语句 C. break语句可用在if语句中,它将使执行流程跳出当前if语句 D. break语句在一层循环体中可以出现多次 答案:C

3.4 下列对C++中的派生类的描述中,错误的是 。 A. 一个派生类可以作为另一个派生类的基类

B. 派生类至少有一个基类

C. 派生类的缺省继承方式是private继承 D. 派生类只继承了基类的公有和保护成员 答案:D

3.5 下列的各种函数中, 不是类的成员函数。

A. 构造函数 答案:C

3.6 下列对静态数据成员的描述中,错误的是 。

A. 说明静态数据成员时前边要加修饰符static B. 静态数据成员要在类体外进行初始化

C. 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符 D. 静态数据成员不是所有对象所共用的、 答案:D

B. 析构函数

C. 友元函数

D. 拷贝构造函数