1、华侨大学 面向对象程序设计(二) 试卷(B)系别 考试日期 2023年 06月27日姓名 学号 成绩 一、填空题(15分,每空1分)1. 类的成员涉及_和_。2. 建立一个类对象时,系统自动调用_。3. 假如希望类的成员为该类所有对象所共享,可以使用关键字_来修饰。4. 假如希望完毕所谓的深拷贝,需要重载_构造函数。5. 类成员的访问控制涉及_、_和_。6. 不属于类成员但却可以访问类的私有数据变量的函数是该类的_。7. 运算符和 7. 下列关于构造函数的描述中,错误的是_。A) 构造函数可以没有参数 B) 构造函数不可以设立默认参数C) 构造函数可以是内联函数 D) 构造函数可以重载8. 下
2、面描述中,表达错误的是_。A) 公有继承时基类中的public成员在派生类中仍是public的B) 公有继承是基类中的private成员在派生类中仍是private的 C) 公有继承是基类中的protected成员在派生类中仍是protected的D) 私有继承时基类中的public成员在派生类中是private的9. 运算符重载是对已有的运算符赋予多重含义,因此_A) 可以对基本类型(如double类型)的数据,重新定义“+”运算符的含义B) 可以改变一个已有运算符的优先级和操作数个数C) C+中已有的所有运算符都可以重载D) 只能重载C+中已有的运算符,不能定义新运算符10. 已知类MyI
3、nt的定义如下: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的定义如下,data存放数据,capacity是当前分派的空
4、间大小,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& operator0);data = _(3)_;capacity = n;le
5、ngth = 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以及Derived的数据成员v1、v2。class Baseint v;publ
6、ic: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; i 5; i+) f(i+1);cout i = i endl;2. class Ba
7、sepublic: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;private :int a,b;void main( ) Base m, n(4,8);
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 mc2 = mc1;MyClass mc3(mc2);mc1 = mc3;return 0
9、;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,返回值统一为int,例如两个整数相加的版本为 int add(int, int)。2. 给定类Int
10、egerNumber的定义如下,规定实现如下五个运算符重载。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, int x);/后+friend IntegerNumber& operator+(Integer
11、Number& a);/前+friend ostream& operator(ostream& out, IntegerNumber& rhs);华侨大学 面向对象程序设计(二) 试卷(B)答题纸系别 考试日期 2023年 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分)