当前位置:首页 > 面向对象程序设计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. 拷贝构造函数
共分享92篇相关文档