您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 11-12面向对象程序设计(二)试卷(B)(带答案)
1华侨大学面向对象程序设计(二)试卷(B)系别考试日期2012年06月27日姓名学号成绩一、填空题(15分,每空1分)1.类的成员包括____________和_____________。(数据成员/函数成员)2.建立一个类对象时,系统自动调用____________。(构造函数)3.如果希望类的成员为该类所有对象所共享,可以使用关键字________来修饰。(static)4.如果希望完成所谓的深拷贝,需要重载_______构造函数。(拷贝)5.类成员的访问控制包括_________、_________和__________。(public/protected/private)6.不属于类成员但却可以访问类的私有数据变量的函数是该类的_________。(友元函数)7.运算符和重载只能通过__________函数实现。(友元)8.类定义中,默认的访问控制是_______。(private)9.C++函数中参数值的传递方式有________、__________、_________。(值传递/指针传递/引用传递)10.继承关系可以是public、protected和________。(private)二、选择题(20分,每小题2分)1.类名称不能以开头。A)小写字母B)大写字母C)数字D)下划线下列选项中,不是C++关键字的是______。A)classB)virtualC)publicD)object2.对于类Base,如果没有为其定义构造函数,系统将自动为我们创建一个形为_____的默认构造函数。A)Base(constBase&);B)Base(intx=0);C)voidBase(void);D)Base();3.对于类Base,下列选项______是合法的析造函数。A)void~Base(){}B)~Base(){}C)int~Base(){}(D)Base~Base(){}4.下列语句中,_______不能为我们定义一个常量。A)#definePI3.1415926B)#definePI=3.1414926C)constdoublePI=3.1415926;D)conststaticdoublePI=3.1415926;5.为了提高函数调用的实际运行速度,可以将较简单的函数定义为______。A)递归函数B)友元函数C)内联函数D)成员函数6.下列运算符中,______运算符不能被重载。A)?:B)+C)[]D)7.下列关于构造函数的描述中,错误的是______。A)构造函数可以没有参数B)构造函数不可以设置默认参数C)构造函数可以是内联函数D)构造函数可以重载28.下面描述中,表达错误的是_______。A)公有继承时基类中的public成员在派生类中仍是public的B)公有继承时基类中的private成员在派生类中仍是private的C)公有继承时基类中的protected成员在派生类中仍是protected的D)私有继承时基类中的public成员在派生类中是private的9.运算符重载是对已有的运算符赋予多重含义,因此_______A)可以对基本类型(如double类型)的数据,重新定义“+”运算符的含义B)可以改变一个已有运算符的优先级和操作数个数C)C++中已经有的所有运算符都可以重载D)只能重载C++中已有的运算符,不能定义新运算符10.已知类MyInt的定义如下:classMyInt{intdata;public:MyInt(intd){data=d;}};下列对MyInt类对象数组的定义和初始化语句中,正确的是A)MyIntmyInts[3];B)MyIntmyInts[3]={MyInt(2)};C)MyIntmyInts[3]={MyInt(3),MyInt(4),MyInt(5)};D)MyInt*myInts=newMyInt[3];三、阅读以下程序并填空(填上正确的语法成分),使其成为完整的程序(20分,每空2分)(1).已知向量MyVector的定义如下,data存放数据,capacity是当前分配的空间大小,length是data里实际存放的元素数目。(1)实现构造函数,分配大小为n的空间,并都初始化为0;(2)实现析构函数,释放分配的空间;(3)重载流插入运算符,将当前data的所有元素都依次打印出来,格式如3245。classMyVector{int*data;//指向存放数组数据的空间intcapacity;//当前分配的空间大小intlength;//当前实际的元素数目public:MyVector(intn);~MyVector(){delete____(1)______;}int&operator[](inti);___(2)___ostream&operator(ostream&out,constMyVector&mv);};MyVector::MyVector(intn){//实现构造函数assert(n0);data=______(3)______;capacity=n;length=0;for(inti=0;in;i++)*(data+i)=0;}ostream&operator(ostream&out,constMyVector&mv){//重载运算符for(inti=0;__(4)__;i++)out___(5)______““;outendl;returnout;}3(1)[]data(2)friend(3)newint[n](4)imv.length(5)*(mv.data+i)(2).类Derived公共继承于Base。Base的构造函数有一个参数i用于初始化其数据成员v。Derived的构造函数有三个参数val1,val2和val3,分别用于初始化Base的数据成员v以及Derived的数据成员v1、v2。classBase{intv;public:Base(inti):____(6)______{}};classDerived:____(7)______{intv1,v2;public:Derived(intval1,intval2,intval3):____(8)_____,____(9)_____,__(10)______{}};(6)v(i)(7)publicBase(8)Base(val1)(9)v1(val2)(10)v2(val3)四、读程序,写出运行结果(25分,每题5分)1.voidf(inti){staticintcalledTimes=0;coutNo.++calledTimesinf(i)endl;}intmain(){inti=0;for(inti=0;i5;i++)f(i+1);couti=iendl;}答案:2.classBase{public:voidprint(){coutInBase::print()endl;};}classDerived:publicBase{public:voidprint(){Base::print();coutInDerived::print()endl;}};intmain(){Derivedd;d.print();return0;}答案:InBase::print()InDerived::print()3.classA{4public:A(inti=0,intj=0){a=i;b=j;}voidprint(){cout”a=”a”,b=”bendl;}private:inta,b;};voidmain(){Am,n(4,8);m.print();n.print();}答案:a=0,b=0a=4,b=84.classMyClass{public:MyClass(){coutMyClass()endl;}MyClass(constMyClass&another){coutMyClass(constMyClass&another)endl;}MyClass&operator=(constMyClass&rhs){coutoperator=()endl;return*this;}};intmain(){MyClassmc1;MyClassmc2=mc1;MyClassmc3(mc2);mc1=mc3;return0;}答案:5.classAnimal{public:Animal(){coutAnimal::Animal()endl;}~Animal(){coutAnimal::~Animal()endl;}};classTigger:publicAnimal{public:Tigger(){coutTigger::Tigger()endl;}~Tigger(){coutTigger::~Tigger()endl;}5};classCat:publicTigger{public:Cat(){coutCat::Cat()endl;}~Cat(){coutCat::~Cat()endl;}};intmain(){Catanimal;}答案:五、编程题(共20分)1.请实现以下三个分别可以支持两个、三个和n个整数相加的重载函数。函数名统一为add,返回值统一为int,例如两个整数相加的版本为intadd(int,int)。intadd(intx,inty){returnx+y;}intadd(intx,inty,intz){returnx+y+z;}intadd(intx[],intn){intresult=0;for(inti=0;in;i++)result+=x[i];returnresult;}2.给定类IntegerNumber的定义如下,要求实现如下五个运算符重载。classIntegerNumber{intvalue;public:IntegerNumber(intn=0){value=n;}IntegerNumberoperator+(constIntegerNumber&rhs);IntegerNumberoperator-(constIntegerNumber&rhs);friendIntegerNumberoperator++(IntegerNumber&a,intx);//后++friendIntegerNumber&operator++(IntegerNumber&a);//前++6friendostream&operator(ostream&out,IntegerNumber&rhs);};答案:IntegerNumberIntegerNumber::operator+(constIntegerNumber&rhs){returnIntegerNumber(value+rhs.value);}IntegerNumberIntegerNumber::operator-(constIntegerNumber&rhs){returnIntegerNumber(value-rhs.value);}IntegerNumberoperator++(IntegerNumber&data,intx){IntegerNumbern(data.value);data.value++;returnn;}IntegerNumber&operator++(IntegerNumber&data){data.value++;returndata;}ostream&operator(ostream&out,IntegerNumber&rhs){outrhs.value;returnout;}7华侨大学面向对象程序设计(二)试卷(B)答题纸系别考试日期2012年06月27日姓名学号成绩题号第一题第二题第三题第四题第五题总分成绩阅卷人一、填空题(15分,每空1分)(1)(2)(3)(4)(5
本文标题:11-12面向对象程序设计(二)试卷(B)(带答案)
链接地址:https://www.777doc.com/doc-3095546 .html