(完整word版)2016-2017年度面向对象程序设计试卷.doc
上传人:含秀****66 上传时间:2024-09-11 格式:DOC 页数:13 大小:87KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

(完整word版)2016-2017年度面向对象程序设计试卷.doc

(完整word版)2016-2017年度面向对象程序设计试卷.doc

预览

免费试读已结束,剩余 3 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

/8华中科技大学研究生课程考试试卷面向对象程序设计√√□开卷□闭卷□公共课□专业课课程名称:课程类别考核形式2017年1月9日学生类别______________考试日期______________院系_______________杨卫东、左峥嵘学号__________________姓名__________________任课教师___________________一、填空(共15分,每空1分)1、编译时的多态性通过__重载__函数实现。2、面向对象的四个基本特性是抽象、多态、继承和封装。3、假定AB为一个类,则执行“ABa(10),*b=&a,&p=a;”语句时调用该类构造函数的次数为2。4、C++类成员访问属性public、private、protected三种类型。5、非成员函数应声明为类的__友元___函数才能访问这个类的private成员。6、。要实现动态联编必须通过对象指针或引用来调用_虚函数_实现。7、类B是由类A以保护方式派生的,则类A中私有访问属性的数据成员在类B中的访问属性为不可访问。8、+、=、[]、->等四种运算符中,可采用友元函数重载的运算符是+。9、抽象类是指具有纯虚函数的类,它只能作为基类来使用。二、问答题(共30分,每小题6分)1.简述运算符重载的实现方式有哪几种?给出对应的声明语法形式。答案:(1)类外定义的运算符重载函数格式为:friend<返回类型>operator<op>(<类型>参数1,<类型>参数2){<函数体>}(2)成员运算符重载函数<返回类型><类名>::operator<op>(<类型>参数){<函数体>}2.什么是多继承?多继承时,构造函数和析构函数执行顺序是怎样的?答案:多继承是指派生类具有多个HYPERLINK"http://baike.baidu.com/view/535539.htm"\t"_blank"基类,HYPERLINK"http://baike.baidu.com/subview/535532/535532.htm"\t"_blank"派生类与每个基类之间的关系仍可看作是一个单继承。派生类构造函数的执行顺序是先执行所有基类的构造函数(顺序按照定义派生类时指定的各基类顺序),再执行派生类的构造函数,析构函数执行顺序,与构造函数完全相反。3.写出下面程序的运行结果#include<iostream>#include<string>usingnamespacestd;classPerson{public:Person(char*nam,intag){strcpy(name,nam);age=ag;cout<<"Person类构造函数---"<<name<<endl;}Person(char*nam){strcpy(name,nam);cout<<"Person类构造函数(char*nam)---"<<name<<endl;}~Person(){cout<<"Person类析构函数---"<<name<<endl;}voiddisplay(){cout<<"姓名:"<<name<<endl;}protected:charname[100];intage;};classTeacher:publicPerson//声明Teacher(教师)类{public://公用部分Teacher(char*nam,inta,char*t):Person(nam,a)//构造函数{strcpy(title,t);cout<<"Teacher类构造函数"<<endl;}~Teacher(){cout<<"Teacher类析构函数"<<endl;}voiddisplay1()//输出教师有关数据{cout<<"姓名:"<<name<<endl;cout<<"年龄"<<age<<endl;cout<<"职称:"<<title<<endl;}protected://保护部分chartitle[10];//职称};classStudent:publicPerson{public:Student(char*nam,chars,floatsco):Person(nam){sex=s;score=sco;cout<<"Student类构造函数---"<<name<<endl;}Student(char*nam,chars):Person(nam){sex=s;cout<<"Student类构造函数---班长:"<<name<<endl;}