您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > c++,面向对象程序设计考试试题2
大学考试试题纸(A卷)(2007-2008学年第1学期)《面向对象程序设计》课程计算机院(系)班级考试时量100分钟学生人数命题教师系主任交题时间:年月日考试时间:年月日1.一、简答题(每小题5分,共20分)1.什么是类?什么是对象?对象与类的关系是什么?2.构造函数和析构函数的主要作用是什么?他们各有什么特性?3.有哪几种继承方式?每种方式的派生类对基类成员的继承性如何?4.简要叙述友元运算符函数和成员运算符函数有什么不同点?2.二、选择题(每小题2分,共20分)1.假设已经有定义constchar*pName=”Student”;下面的语句错误的是。A.pName[3]=’t’;B.pName=”score”;C.pName=newchar[5];D.pName=newchar(‘p’);2.在下面有关对构造函数的描述中,错误的是。A.构造函数可以带有返回值B.构造函数的名字与类名完全相同C.构造函数可以带有参数4.构造函数可以缺省3.在下面有关析构函数特征的描述中,正确的是。A.一个类中可以定义多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型D.析构函数可以有一个或多个参数4.假定AB为一个类,则执行“ABa(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为。A.3B.4C.6D.95.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为。A.ABoperator+(AB&a,AB&b)B.ABoperator+(AB&a)C.operator+(ABa)D.AB&operator+()6.假设定义了函数模版:templateclassTTmax(Tx,Ty){return(xy)?x:y;}并定义了:inti;charc;那么下列错误的调用该模版的是。A.max(i,i);B.max(c,c);C.max(int(c),i);D.max(c,i);7.模版的主要用途是为了。A.提高代码的运行效率B.实现多态性C.提高代码的重用性D.加强类的封装性8.下列说法错误的是。A.申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B.允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象。C.声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D.以上说法都不对9.现有程序如下:#includeiostream.h#includeiomanip.hvoidmain(){intkk=1234;coutsetfill(‘*’)setw(6)kkendl;coutkkendl;}以上程序的运行结果是。A.1234B.**1234C.**1234D.以上都不对12341234**123410.在公有继承的情况下,基类成员在派生类中的访问权限。A.受限制B.保持不变C.受保护D.不受保护1.三、填空题(每空1分,共10分)1.定类AB中有一个公有属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为(1)。2.通常情况下,当创建派生类对象时,首先执行(2)的构造函数,随后再执行(3)的构造函数,当撤销派生类对象时,则先执行(4)的析构函数,随后再执行(5)的析构函数。3.ios类中有几个成员函数可以用来对输入输出进行格式化控制,格式控制主要是通过对(6)的操作来完成的。4.所谓赋值兼容规则是指在需要基类对象的任何地方都可以使用(7)来替代。5.纯虚函数是一个在基类中说明却没定义的虚函数,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数。那么,纯虚函数的定义形式为(8)。6.分别写出类AB的单目运算符”++”的前缀方式和后缀方式的友元函数重载一般形式:(9)、(10)。2.四、写出下面程序的运行结果(每小题5分,共20分)1、#includeiostream.hclassBase{public:Base(){coutConstructingbaseclass\n;}~Base(){coutDestructingbaseclass\n;}};classDerive:publicBase{public:Derive(){coutConstructingderivedclass\n;};~Derive(){coutDestructingderivedclass\n;};private:Basea;};voidmain(){Deriveop;}2、#includeiostream.hclassBase{public:voidshow(){coutThisisBaseclassendl;}};classDerive:publicBase{public:voidshow(){coutThisisDerivedclassendl;}};voidmain(){Baseobj,*pBase;DeriveD_obj;pBase=&obj;pBase-show();pBase=&D_obj;pBase-show();}3、#includeiostream.hintarr[]={23,25,27,29,31};int&get_value(inti){returnarr[i];}voidmain(){inti;coutget_value(3)endl;get_value(2)=50;for(i=0;i5;i++)coutget_value(i)”“;}4、#includeiostream.hclasscomplex{public:complex(intr,inti):real(r),imag(i){}friendcomplexoperator++(complex&);friendcomplexoperator--(complex);voidprint(){cout(real,imag)endl;}private:intreal,imag;};complexoperator++(complex&o){o.real++;o.imag++;returno;}complexoperator--(complexo){o.real--;o.imag--;returno;}voidmain(){complexa(1,2),b(3,4);++a;a.print();--b;b.print();}1.五、编程题(每小题10分,共30分)1、建立一个Student类,含有私有的学号(字符型)、姓名(字符型)、年龄(整型)数据成员。用new自动为Student的对象分配内存,并将学号“0504020101”,姓名“张三”,年龄20存入内存的相应域中,把该的信息显示出来。2、建立普通的基类building,用来存储一座楼房的层数、房间数以及它的总面积数。建立派生类house,继承building,并存储下面的内容:卧室与浴室的数量,另外,建立派生类office,继承building,并存储灭火器与电话的书面。在主程序中,分别建立对象显示各对象所有的数据成员。3、为Date类重载“+”运算符,实现在某一个日期上(年、月、日)加一个天数。注:请打印或用炭素墨水书写、字迹要求工整、并抄写在方框线内共页,第页,考试试题纸(A卷)(2007-2008学年第1学期)《面向对象程序设计》课程计算机、网络专业班级考试时量100分钟学生人数命题教师系主任交题时间:年月日考试时间:年月日一、简答题(每小题5分,共20分)1.什么是类?什么是对象?对象与类的关系是什么?2.构造函数和析构函数的主要作用是什么?他们各有什么特性?3.有哪几种继承方式?每种方式的派生类队基类成员的继承性如何?4.简要叙述友元运算符函数和成员运算符函数有什么不同点?二、选择题(每小题2分,共20分)1.假设已经有定义constchar*pName=”Student”;下面的语句错误的是。A.pName[3]=’t’;B.pName=”score”;C.pName=newchar[5];D.pName=newchar(‘p’);2.在下面有关对构造函数的描述中,错误的是。A.构造函数可以带有返回值B.构造函数的名字与类名完全相同C.构造函数可以带有参数5.构造函数可以缺省3.在下面有关析构函数特征的描述中,正确的是。A.一个类中可以定义多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型D.析构函数可以有一个或多个参数4.假定AB为一个类,则执行“ABa(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为。A.3B.4C.6D.95.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为。A.ABoperator+(AB&a,AB&b)B.ABoperator+(AB&a)C.operator+(ABa)D.AB&operator+()6.假设定义了函数模版:templateclassTTmax(Tx,Ty){return(xy)?x:y;}并定义了:inti;charc;那么下列错误的调用该模版的是。A.max(i,i);B.max(c,c);C.max(int(c),i);D.max(c,i);7.模版的主要用途是为了。A.提高代码的运行效率B.实现多态性C.提高代码的重用性D.加强类的封装性8.下列说法错误的是。A.申明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生的对象B.允许将一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明为指向派生类对象的指针指向其基类的一个对象。C.声明为指向基类对象的指针,当其指向公有派生类对象时,只能用它来直接访问派生类中从基类继承来的成员,而不能直接访问公有派生类中定义的成员D.以上说法都不对9.现有程序如下:#includeiostream.h#includeiomanip.hvoidmain(){intkk=1234;coutsetfill(‘*’)setw(6)kkendl;coutkkendl;}以上程序的运行结果是。B.1234B.**1234C.**1234D.以上都不对12341234**123410.在公有继承的情况下,基类成员在派生类中的访问权限。A.受限制B.保持不变C.受保护D.不受保护三、填空题(每空1分,共10分)1.定类AB中有一个公有属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为(1)。2.通常情况下,当创建派生类对象时,首先执行(2)的构造函数,随后再执行(3)的构造函数,当撤销派生类对象时,则先执行(4)的析构函数,随后再执行(5)的析构函数。3.ios类中有几个成员函数可以用来对输入输出进行格式化控制,格式控制主要是通过对(6)的操作来完成的。4.所谓赋值兼容规则是指在需要基类对象的任何地方都可以使用(7)来替代。5.纯虚函数是一个在基类中说明却没定义的虚函数,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数。那么,纯虚函数的定义形式为(8)。6.分别写出类AB的单目运算符”++”的前缀方式和后缀方式的友元函数重载一般形式:(9)、(10)。四、写出下面程序的运行结果(第1小题6分,第2、3小题7分,共20分)1、#includeiostream.hclassBase{public:Base(){coutConstructingbaseclass\n;}~Base(){coutDestructingbaseclass\n;}};classDerive:publicBase{public:Derive(){coutConst
本文标题:c++,面向对象程序设计考试试题2
链接地址:https://www.777doc.com/doc-2904165 .html