您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 南京大学金陵学院2009-2010学年C++期末(袁杰老师)
南京大学金陵学院期末试卷2009~2010学年第一学期课程名称:面向对象程序设计与VisualC++教师姓名:袁杰试卷类型:闭卷专业:______________学号:_____________姓名:_______________成绩___________一、主观题(全都是不定项选择,错选得0分,理由不正确得0分):(80分)9.已知classMyClass{1.下列说法正确的有:(BD)public:A.函数模版不能含有常规形参B.函数模版的一个实例就是一个函数定义C.类模版的成员函数不能是模版函数D.用类模版定义对象时,不能省略模版实参2.已知Value是一个类,value是Value类的一个对象,下面以非成员函数形式重载的运算符函数原型中,正确的有:(A)A.Valueoperator+(Valuev,inti);B.Valueoperator+(Valuev=value,inti);C.Valueoperator+(Valuev,inti=0);D.Valueoperator+(Valuev=value,inti=0);理由是:___参数不能初始化3.下面是一个模版声明的开始部分:TemplatetypenameTdouble…MyClass(){cout4;}}a,b[3],*p[3];上述程序段输出为_____4444_______理由是:________________________________________10.以下乘法运算符重载定义中正确的是:(BCD)A.MyClassoperator*(double,double);B.MyClassoperator*(double,MyClass);C.MyClassoperator*(MyClass,double);D.MyClassoperator*(MyClass,MyClass);理由是:___操作数中至少有一个是自定义类型____11.已知classConstants{public:由此可知:(A)staticdoublegetPI(){return3.1416;}A.这可能是一个函数模版的声明}constant;B.这可能是一个类模版的声明以下能输出3.1416的有:(BC)C.这既可能是一个函数模版的声明,也可能是一个类模版的声明D.这肯定是一个错误的模版声明理由是:___函数的模声明为templatetypename4.派生类以protected方式继承基类,基类的protectedA.coutconstant-getPI();B.coutConstants::getPI();C.coutconstant.getPI();D.coutConstants.getPI();理由是:________________________________________12.下列模版的定义正确的有:(A)成员和public成员在派生类中的访问属性为:(D)A.templatetypenameTTGet(Tx){returnx;}A.public和publicC.protected和publicB.public和protectedD.protected和protectedB.templateclassTGet(Tx){returnx;}C.templateTclassTGet(Tx){returnx;}理由是:基类的私有成员公有成员都以protected的身份出现5.C++中的模版包括:(C)A.对象模版和类模版B.对象模版和函数模版B.函数模版和类模版D.对象、函数和类模版6.面向对象程序设计中,信息隐蔽可以通过(C)A.继承B.多态性C.封装D.模版7.8.已知classMyClass{intvalue;public:MyClass(intn,intm=0){value=m-n;}MyClass(intn):value(n){};intgetValue()const{returnvalue;}};MyClass的构造函数有_____2___个。D.templateTGet(Tx){returnx;}理由是:________________________________________13.以下程序输出结果是:_____0375___________classBase{intx;public:Base(intn=0):x(n){coutn;}intgetX()const{returnx;}};classDerive:publicBase{inty;public:Derive(intm,intn):y(m),Base(n){coutm;}Derive(intm):y(m){coutm;}};voidmain(){理由是:________________________________________}Derived1(3),d2(5,7);理由是:构造函数先构造基类,再访构造派生类C.operator=(a,b)D.operator(b,a)14.以下程序输出结果是:____112_________________classGA{理由是:友元函数的参数个数等于原操作个数19.建立一个有成员对象的派生类对象时,各构造函数public:执行的次序是(C)virtualintf(){return1;}};classGB:publicGA{public:virtualintf(){return2;}A.派生类,成员对象,基类B.成员对象,基类,派生类C.基类,成员对象,派生类D.基类,派生类,成员对象20.在一个派生类的成员函数中,试图调用基类的成员};函数时无法通过编译,可能的原因是(AC)voidshow(GAg){coutg.f();}voiddisplay(GA&g){coutg.f();}voidmain(){GAa;show(a);display(a);GBb;show(b);display(b);A.该成员函数为基类的私有成员B.该成员函数为基类的保护成员C.派生类的继承方式为私有继承D.派生类的继承方式为保护继承理由是:派生类的公有,私有成员不能直接访问基类私有成员}21.肯定不属于Value类的成员函数的有(BD)理由是:________________________________________15.以下程序的输出为10,则横线中应填入__ABC(abc)__classABC{intabc;public:ABC(intn=0):abc(n){}intgetABC()const{returnabc;}ABC&operator+=(ABCa){abc+=a.abc;A.Valueoperator+(Value);B.Valueoperator-(Value,Value);C.Valueoperator*(Value);D.Valueoperator/(Value,Value);理由是:________________________________________22、在类中必须声明成员函数的____函数名____,成员函数的____函数体__________部分可以写在类外。23、被调函数运行期间改变主调函数中实参变量的值,则被调函数的形参应该是______引用__类型或____指针__________类型。return__________;24、_____抽象__________类只能作为基类使用,而不能声}};voidmain(){ABCx(3),y(7);x+=y;coutx.getABC();}理由是:________________________________________明它的对象。25、进行函数重载时,它们的形参___个数____或____类型_____必须不同。26、拷贝构造函数的形参必须是_____它所在类的类型的引用__。27、通过一个__常______对象只能调用它的常成员函数,不能调用其他成员函数。28.classBase{protected:16.下列说法错误的有:(D)intamount;A.类的继承有可能带来软件的安全性问题B.虚基类可以解决由多继承产生的二义性问题C.派生类构造函数必须要调用基类的构造函数D.派生类没有继承基类的私有成员理由是:继承基类的私有成员,但不可以直接访问其私有成员public:Base(intn=0):amount(n){}IntgetAmount()const{returnamount;}};classDerived:publicBase{17.下列说法正确的有:(D)protected:A.运算符重载是多态性的唯一表现B.C++中可以通过运算符重载创造新的运算符C.C++中的所有运算符都可以作为非成员函数重载D.运算符重载时不可以改变其结合性理由是:________________________________________public:};intvalue;Derived(intm,intn):value(m),Base(n){}IntgetDataconst{returnvalue+amount;}18.如果表达式a=b中的”=”是作为非成员函数重载已知x是Derived对象,表达式中正确的有:()的运算符,则可等效表示为(C)A.x.value+x.getAmount()A.a.operator=bB.b.operatoraB.x.getData()-x.getAmount()C.x.getData()-x.amountD.x.value+x.amount理由是:________________________________________29.一个空白的类中隐含有_____4____成员,分别是______构造,拷贝,析构,this________________。30.下面的程序将输出_____错误______________________classBASE{charc;public:BASE(charn):c(n){}virtual~BASE(){coutc;}};classDERIVED:publicBASE{charc;public:DERIVED(charn):BASE(n+1),c(n){}~DERIVED(){coutc;}};intmain(){DERIVED(‘X’);return0;}理由是:_形参为字符不是字符串型31.在下列程序划线处填入正确的语句classBase{public:voidfun(){coutBase::funendl;}};classDerived:publicBase{voidfun(){__Base::fun()_______//调用基类的函数fun()coutDerived::funendl;}};32.C++语言中,用于异常处理的三个关键字分别是_try__,___throw_______,____catch_______。1.分析以下程序的执行结果并说明原因classSample{public:intx,y;Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}voiddisp(){coutx=x,y=yendl;}~Sample(){if(x==y)coutx==yendl;elsecoutx!=yendl;}};voidmain(){Samples1(2,3);s1.disp();if(s1.x==2)return;}x=2,y=32.分析以下程序的执行结果并说明原因classSample{public:Sample();Sample(int);~Sample();voiddisplay();protected:intx;};Sample::Sample(){x=0;coutconstructingnormally\n;
本文标题:南京大学金陵学院2009-2010学年C++期末(袁杰老师)
链接地址:https://www.777doc.com/doc-2398519 .html