C++面向对象程序设计期末复习.doc
文本预览下载声明
题型与考点复习
一.选择题(20题,共30分)
作用域运算符的功能
设置虚基类的目的
构造函数的特征
析构函数的说法
重载函数在调用时选择的依据
静态成员的特性
友元
派生类的描述
运算符在C++中不能被重载?
动态联编的描述
纯虚函数和抽象类的描述
抽象类的使用
delete删除一个动态对象
new运算符的下列描述
C++与C语言关系的描述
类定义中,错误的语句 书3.1.1(7)
自动调用该类构造函数次数
静态数据成员的描述
派生类的描述
派生类的构造函数的初始化列表中,不能包含
虚基类的声明
赋值兼容规则
虚函数
纯虚函数表述
抽象类表述
重载运算符函数
成员函数重载的运算符、友元函数重载的运算符
关键字class和typename
类模板表述
重载了运算符 书 7.2节
语句ofstream f()
二.填空题(15空,共30分)
标准输入输出流对象cin cout
类中的数据和成员函数
类都有一个隐含的指针指向:正在调用成员函数的对象
非成员函数访问类成员
虚基类的目的:解决二义性问题
基类数据成员的初始化
operator++
运算符函数调用格式
异常处理的保留字
异常错误处理函数terminate() 、set_terminate()
三.程序的执行、填空(4题,共20分)
四.编程题(3小题,共20分)
例题
一.选择题
1.如果表达式++i*k中的“++”和“*”都是重载的友元运算符,若采用运算符函数调用格式,则表达式还可以表示为 A 。
A. operator*(i.operator++(),k)
B. operator*(operator++(i),k)
C. i.operator++().operator*(k)
D. k.operator*(operator++(i))
2.在下列成对的表达式中,运算符“/”的意义相同的一对是 D 。
A.8/3和8.0/3.0 B.8/3.0和8/3 C.8.0/3和8/3 D.8.0/3.0和8.0/3
3.如果表达式y*x++中,“*”是作为成员函数重载的运算符,“++”是作为友元函数重载的运算符,采用运算符函数调用格式时,该表达式应表示为 C 。
A. x.operator++(0).operator*(y)
B. operator*(x.operator++(0),y)
C. y.operator*(operator++(x,0) 参考书例6.8
D. operator*(operator++(x,0),y)
4. C++流中重载了运算符,它是一个 D 。
A.用于输出操作的成员函数
B.用于输入操作的成员函数
C.用于输入操作的非成员函数
D.用于输出操作的非成员函数
二.填空题
1.面向对象的程序设计的三大特征继承性 ?、 封装性?和多态性。
2.类中成员的组成包含哪两个部分 数据成员 、 成员函数
3表达式x=operator-(y,z)还可以表示为 x=y-z 。
4.定义Student类的后自增运算符++的重载语法格式为
Student operator ++(int); 。
5.已知
int DBL(int n){ return n+n;}
和
long DBL(long n){return n+n;}
是一个函数模板的两个实例,则该函数模板的定义是
template typename T
T DBL(T n) {return n+n;}
6.如果表达式x=y*z中的“*”是作为成员函数重载的运算符,采用运算符函数调用格式时,该表达式应表示为 x=y.operator * (z)
7.表达式operator++(x , int)可以表示为 x++
三.程序的执行、填空
1.构造函数与析构函数的调用
2.例3.15
3.第六章习题5当ch==’u’时的运行结果和当ch==’f’时的运行结果
4.例6.1(代码填空)
#includeiostream.h
class RMB{
public:
RMB(unsigned int d, unsigned int c);
RMB operator+(RMB); // 声明运算符函数,重载+,只有一个参数
RMB operator++(); // 声明运算符函数,重载++,无参数
void display(){ cout (yuan + jf / 100.0) endl; }
protected:
unsigned int yuan;
unsigned int jf;
};
RMB::RMB(unsigned int d, unsigned
显示全部