请同学们自行学习,例程仅供参考...

出这么几道题目,希望考察到以下几点:1)各类构造函数;2)类成员函数和友元函数;3)各类运算符重载;4)const关键字的使用;5)字符串及指针操作;6)学会通过报错信息查看C++源码进而修改程序;7)逻辑缜密的程序设计,正确的运行结果不足以说明程序的正确性。

一、选择题
1. 下面()是对构造函数和析构函数的正确定义。
A.void X::X(), void X::~X()
B.X::X(参数), X::~X()
C.X::X(参数), X::~X(参数)
D.void X::X(参数), void X::~X(参数)
2. 对静态成员的不正确描述是()
A. 静态成员不属于对象,是类的共享成员
B. 静态数据成员要在类外定义和初始化
C. 调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
D. 非静态成员函数也可以操作静态数据成员
3. 关于友元的描述中,错误的是()。
A. 友元函数是成员函数,它被说明在类体内
B. 友元函数可直接访问类中的私有成员
C. 友元函数破坏封装性,使用时尽量少用
D. 友元类中的所有成员函数都是友元函数
4. 一个程序中数组类Array对象a和整形变量k定义为Array a(2,4);int k;且程序中包含有语句"a(1,2)=++k*3;",则此语句中肯定属于重载操作符的是()
A. ()
B. =
C. ++
D. *
5. 为类重载T流提取运算符>>,下列声明正确的是( )。
A. ostream& operator>>(ostream&, T&);
B. istream& operator>>(istream&, T&);
C. istream& operator>>(istream&, T );
D. istream operator>>(istream&, T&);

二、程序设计题
1. 实现如下分数类:

通过重载四则运算、比较运算、输入输出流运算等运算符,使得对于如下的测试函数main和测试样例sample input,得到相应输出sample output:

1)main函数的注释部分用于提示,除此之外的其他部分不要做改动
2)上面类中给出了部分函数定义,把类补充完整并保证程序的编译通过
3)没能实现功能可把测试函数中相应代码注释掉,保证程序正确运行
4)两组输入样例对应7条输出,每条正确的输出结果会得到相应分数

2. c++ STL封装了string类,里面定义了对字符串的一系列操作。现选取其中的一部分功能,实现简化版本的String类:

测试函数main如下:

1) 本程序不需要任何输入
2) 上面类中给出了部分函数定义,把类补充完整并保证程序的编译通过
3) 没能实现功能可把测试函数中相应代码注释掉,保证程序正确运行
4) 对于每个display函数,正确的输出结果会得到相应的分数

参考答案:

一、 选择题:B B A A B

二、程序设计题

1.

2.