收藏 分销(赏)

2016-2017年度面向对象程序设计试卷.doc

上传人:a199****6536 文档编号:1655463 上传时间:2024-05-07 格式:DOC 页数:13 大小:87.50KB
下载 相关 举报
2016-2017年度面向对象程序设计试卷.doc_第1页
第1页 / 共13页
2016-2017年度面向对象程序设计试卷.doc_第2页
第2页 / 共13页
2016-2017年度面向对象程序设计试卷.doc_第3页
第3页 / 共13页
2016-2017年度面向对象程序设计试卷.doc_第4页
第4页 / 共13页
2016-2017年度面向对象程序设计试卷.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、华中科技大学研究生课程考试试卷面向对象程序设计开卷闭卷公共课专业课课程名称: 课程类别 考核形式2017年1月9日学生类别_考试日期_ 院系_杨卫东、左峥嵘学号_姓名_任课教师_一、填空(共15分,每空1分)1、编译时的多态性通过_重载_函数实现。2、面向对象的四个基本特性是 抽象 、 多态 、 继承 和 封装 。3、假定AB为一个类,则执行“AB a(10), *b=&a, &p=a;”语句时调用该类构造函数的次数为 2 。4、C+类成员访问属性 public 、 private 、 protected 三种类型。 5、非成员函数应声明为类的_友元_函数才能访问这个类的private成员。6

2、、。要实现动态联编必须通过对象指针或引用来调用_虚函数_实现。7、类B是由类A以保护方式派生的,则类A中私有访问属性的数据成员在类B中的访问属性为 不可访问 。8、+、=、-等四种运算符中,可采用友元函数重载的运算符是 + 。9、抽象类是指具有 纯虚函数 的类,它只能作为 基类 来使用。二、问答题(共30分,每小题6分)1简述运算符重载的实现方式有哪几种?给出对应的声明语法形式。答案: (1)类外定义的运算符重载函数格式为:friend operator ( 参数1, 参数2) (2)成员运算符重载函数 :operator ( 参数) 2什么是多继承?多继承时,构造函数和析构函数执行顺序是怎样

3、的?答案:多继承是指派生类具有多个基类,派生类与每个基类之间的关系仍可看作是一个单继承。派生类构造函数的执行顺序是先执行所有基类的构造函数(顺序按照定义派生类时指定的各基类顺序),再执行派生类的构造函数,析构函数执行顺序,与构造函数完全相反。3写出下面程序的运行结果#include #include using namespace std;class Personpublic: Person(char *nam,int ag) strcpy(name,nam); age = ag; coutPerson类构造函数-nameendl; Person(char *nam) strcpy(name,

4、nam); coutPerson类构造函数(char *nam)-nameendl; Person() coutPerson类析构函数-nameendl; void display() cout姓名:nameendl; protected: char name100; int age;class Teacher: public Person / 声明Teacher(教师)类public: / 公用部分 Teacher(char *nam,int a,char *t):Person(nam,a) / 构造函数 strcpy(title,t); coutTeacher类构造函数endl; Teac

5、her() coutTeacher类析构函数endl; void display1() / 输出教师有关数据 cout姓名:nameendl; cout年龄ageendl; cout职称:titleendl; protected: / 保护部分char title10; / 职称; class Student: public Person public: Student(char *nam,char s,float sco):Person(nam) sex=s; score=sco; coutStudent类构造函数-nameendl; Student(char *nam, char s):P

6、erson(nam) sex=s; coutStudent类构造函数-班长:nameendl; Student() coutStudent类析构函数-nameendl; void display2() / 输出学生有关数据 cout姓名:nameendl; cout性别:sexendl; cout成绩:scoreendl; char *get_name() return name; protected: / 保护部分char sex;float score; / 成绩;class Graduate: public Teacher, public Student public: Graduate

7、(char *nam,int a,char s,char *t,float sco,float w):Teacher(nam,a,t),Student(nam,s,sco),wage(w),monitor(Li Ming,m) coutGraduate类构造函数endl; Graduate() coutGraduate类析构函数endl; void show( ) / 输出人员的有关数据 coutname:Student:nameendl; coutage:Student:ageendl; coutsex:sexendl; coutscore:scoreendl; couttitle:titl

8、eendl; coutwages:wageendl; coutmonitor:monitor.get_name()endl; Student monitor;private: float wage; / 工资;class Doctor:public Graduatepublic: Doctor(char *nam,int a,char s,char *t,float sco,float w,char *tutor): Graduate(nam,a,s,t,sco,w) strcpy(tutor_name, tutor); couttutor_nameendl; private: char tu

9、tor_name20;int main() Doctor d(Wang-li,24,f,assistant,89.5,1234.5,Wang-wu); return 0;答案:Person类构造函数-Wang-liTeacher类构造函数Person类构造函数(char *nam)-Wang-liStudent类构造函数-Wang-liPerson类构造函数(char *nam)-Li MingStudent类构造函数-班长:Li MingGraduate类构造函数Wang-wuGraduate类析构函数Student类析构函数-Li MingPerson类析构函数-Li MingStuden

10、t类析构函数-Wang-liPerson类析构函数-Wang-liTeacher类析构函数Person类析构函数-Wang-li4写出下面程序的运行结果#include #include using namespace std;class A char string80;public :void show();A(char * st);A( );A:A(char * st) strcpy(string, st);cout string 构造 endl;A:A( ) cout string 析构 endl; void A:show() cout string endl;void fun( ) c

11、out 1 fun内 show(); cout5 main内调用fun函数 endl; fun( ); delete ptrA;A g_glb_Obj(6 外部对象g_glb_Obj); static A g_sta_Obj(7 外部静态对象g_sta_Obj);答案:6 外部对象g_glb_Obj构造 7 外部静态对象g_sta_Obj构造 4 main内动态分配对象m_all_Obj构造4 main内动态分配对象m_all_Obj5 main内调用fun函数1 fun内2 fun内自动对象fun_Obj构造3 fun内静态对象fun_sta_Obj构造2 fun内自动对象fun_Obj析构

12、4 main内动态分配对象m_all_Obj析构3 fun内静态对象fun_sta_Obj析构5写出下面程序的输出结果#include using namespace std;class Apublic:virtual void Print(int a, int b=5) cout a = a , b = b endl; ;class B : public A public:virtual void Print(int a) cout a = a endl; virtual void Print(int a, double d) cout a = a , d = d Print( 2, 6.9

13、 );p - Print( 2 ); void main( ) A * pa = new A; B * pb = new B; Show(pa); Show(pb); delete pa; delete pb;答案:a = 2 , b = 6 a = 2 , b = 5 a = 2 , b = 6 a = 2 , b = 56. 以下程序代码是否有错,如有请改正并写出运行结果#include class Test private: int x,y=20; public: Test(int i,int j) x=i,y=j; int getx()return x; int gety()retur

14、n y; ; void main() Test mt(10,20); coutmt.getx()endl; coutmt.gety()endl; 答案:int x,y=20;在类内部不能对数据成员直接赋值。 修改int x,y; 三、完成程序题(共20分,每小题5分)1. 完成下面类中成员函数的定义。 _ #include using namespace std;class Counter unsigned value;_ public : Counter( ) value = 0; _ friend Counter _operator +(Counter &a); /前置增量运算符函数。vo

15、id Print( ); Counter _operator +(Counter &a ) a.value+; /把Counter类对象的value值增1 cout 调用前置增量运算符函数 !n; return a; /该函数的返回值是value值增1后的对象void Counter:Print( ) static int i = 0; +i; cout ( i ) 对象的value值 = value endl; void main( ) Counter c ; for(int i = 0; i 3; i+) +c; c.Print( );2. 完成下面类中成员函数的定义。 #include

16、#include using namespace std; _ class str private: char *st; public: _ set(a); str(char *a) str & operator=(_) str &a delete st; set(a.st); return *this; void set(_) /初始化st char *s _ st=new charstrlen(s)+1;strcpy(st,s); ; 3. 在下面程序横线处填上适当内容,使程序执行结果为: S=2 S=5 S=9 #include _ int sum(int i) static int s

17、; _ s=s+i+2;_ return s; void main (void) int S; for (i=0;_) i3,i+S = sum(i); _ coutS=S ; coutendl; 4. 下面是根据边长计算三角形面积的C+程序,在下划线处填上正确的语句。 #include #include _ double area(double a, double b, double c);void main() double a,b,c,s; coutabc; _ /判断是否三角形,若是,则执行面积计算代码if(a+bc&a+cb&c+ba) _ s=area(a,b,c); coutTh

18、e area is:sendl; else coutErrorendl; double area(double a, double b, double c) double s;s = (a+b+c)/2.0; s = sqrt(s*(s-a)*(s-b)*(s-c); _ return s;四、写程序题(共35分)1、建立一个字符串类用于存储和处理字符串,采用友元函数对操作符+进行重载,以实现两个字符串的合并功能。(15分)2、写一个具有动态多态性的学生和教师信息输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名、输入和显示设计成一个抽象类person的成员,并将person类作为学生数据操作类student和教师操作类teacher的基类。程序应能根据待输入人员的类别完成对应人员信息的输入和显示功能。(20分) 13 / 8

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服