1、华侨大学 面向对象程序设计( 二) 试卷( B) 系别 考试日期 06月27日姓名 学号 成绩 一、 填空题( 15分, 每空1分) 1. 类的成员包括_和_。2. 建立一个类对象时, 系统自动调用_。3. 如果希望类的成员为该类所有对象所共享, 能够使用关键字_来修饰。4. 如果希望完成所谓的深拷贝, 需要重载_构造函数。5. 类成员的访问控制包括_、 _和_。6. 不属于类成员但却能够访问类的私有数据变量的函数是该类的_。7. 运算符和 7. 下列关于构造函数的描述中, 错误的是_。A) 构造函数能够没有参数 B) 构造函数不能够设置默认参数C) 构造函数能够是内联函数 D) 构造函数能够
2、重载8. 下面描述中, 表示错误的是_。A) 公有继承时基类中的public成员在派生类中仍是public的B) 公有继承是基类中的private成员在派生类中仍是private的 C) 公有继承是基类中的protected成员在派生类中仍是protected的D) 私有继承时基类中的public成员在派生类中是private的9. 运算符重载是对已有的运算符赋予多重含义, 因此_A) 能够对基本类型( 如double类型) 的数据, 重新定义”+”运算符的含义B) 能够改变一个已有运算符的优先级和操作数个数C) C+中已经有的所有运算符都能够重载D) 只能重载C+中已有的运算符, 不能定义新
3、运算符10. 已知类MyInt的定义如下: class MyIntint data;public:MyInt(int d) data = d; ;下列对MyInt类对象数组的定义和初始化语句中, 正确的是A) MyInt myInts3;B) MyInt myInts3 = MyInt(2);C) MyInt myInts3 = MyInt(3), MyInt(4), MyInt(5); D) MyInt* myInts = new MyInt3;三、 阅读以下程序并填空( 填上正确的语法成分) , 使其成为完整的程序( 20分,每空2分) (1). 已知向量MyVector的定义如下, da
4、ta存放数据, capacity是当前分配的空间大小, length是data里实际存放的元素数目。( 1) 实现构造函数, 分配大小为n的空间, 并都初始化为0; ( 2) 实现析构函数, 释放分配的空间; ( 3) 重载流插入运算符, 将当前data的所有元素都依次打印出来, 格式如3 2 4 5。class MyVectorint *data; /指向存放数组数据的空间int capacity; /当前分配的空间大小int length;/当前实际的元素数目 public: MyVector(int n);MyVector() delete _(1)_; _(2)_ostream& op
5、erator0);data = _(3)_;capacity = n;length = 0;for(int i = 0; in; i+)*(data+i) = 0;ostream& operator(ostream& out, const MyVector& mv)/重载运算符for( int i =0; _(4)_; i+)out _(5)_ ” ”;out endl;return out;(2). 类Derived公共继承于Base。Base的构造函数有一个参数i用于初始化其数据成员v。Derived的构造函数有三个参数val1,val2和val3, 分别用于初始化Base的数据成员v以及
6、Derived的数据成员v1、 v2。class Baseint v;public:Base(int i):_ (6)_;class Derived:_(7)_ int v1,v2;public:Derived(int val1, int val2, int val3):_(8)_, _(9)_,_ (10)_ ;四、 读程序, 写出运行结果( 25分, 每题5分)1. void f(int i)static int calledTimes = 0;cout No. +calledTimes in f( i ) endl;int main()int i = 0;for( int i = 0;
7、i 5; i+) f(i+1);cout i = i endl;2. class Basepublic:void print()coutIn Base:print() endl;class Derived:public Basepublic:void print()Base:print();coutIn Derived:print() endl;int main()Derived d;d.print();return 0;3. class Base public:Base(int i=0,int j=0) a=i;b=j;void print( ) cout”a=”a”,b=”bendl;pr
8、ivate :int a,b;void main( ) Base m, n(4,8);m.print( );n.print( );4. class MyClasspublic:MyClass() cout MyClass() endl;MyClass(const MyClass& another) cout MyClass(const MyClass& another() endl;MyClass& operator=(const MyClass& rhs) cout operator=() endl; return *this;int main()MyClass mc1;MyClass mc
9、2 = mc1;MyClass mc3(mc2);mc1 = mc3;return 0;5. class Animalpublic:Animal() cout Animal:Animal() endl; Animal() cout Animal:Animal() endl; ;class Cat:public Animalpublic:Cat() cout Cat:Cat() endl;Cat() cout Cat:Cat() endl;int main()Cat animal;五、 编程题( 共20分) 1. 请实现三个能够支持两个、 三个和n个整数相加的重载函数。函数名统一为add, 返回
10、值统一为int, 例如两个整数相加的版本为 int add(int, int)。2. 给定类IntegerNumber的定义如下, 要求实现如下五个运算符重载。class IntegerNumberint value;public:IntegerNumber(int n = 0) value = n; IntegerNumber operator+(const IntegerNumber& rhs);IntegerNumber operator-(const IntegerNumber& rhs);friend IntegerNumber operator+(IntegerNumber& a,
11、 int x);/后+friend IntegerNumber& operator+(IntegerNumber& a);/前+friend ostream& operator(ostream& out, IntegerNumber& rhs);华侨大学 面向对象程序设计( 二) 试卷( B) 答题纸系别 考试日期 06月27日姓名 学号 成绩 题号第一题第二题第三题第四题第五题总分成绩阅卷人一、 填空题 ( 15分, 每空1分)1. 、 2. 3. 4. 5. 、 、 6. 7. 8. 9. 、 、 10. 二、 选择题 ( 20分, 每小题2分) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 三、 阅读以下程序并填空( 填上正确的语法成分) , 使其成为完整的程序( 20分,每空2分) 1._ 2._ 3._ 4._5._ 6._7._ 8._ 9._ 10._四、 读程序, 写出运行结果( 25分, 每题5分)1. _2. _3. _4. _5. _五、 编程题( 20分) 1( 10分) 2( 10分)