77范文网 - 专业文章范例文档资料分享平台

实验四类的继承与多态实验

来源:网络收集 时间:2019-01-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

实验四 类的继承与多态实验

【实验目的】

1.理解软件重用性的一种形式——继承。 2.能够通过继承已有的类创建新类。 3.理解基类和派生类的概念。

4.能够在派生类中使用构造函数和析构函数 5.学习虚基类在解决二义性问题中的作用。

6.熟悉多态分类,理解静态联编和动态联编概念。 7.掌握运算符重载方法。

8.理解虚函数、纯虚函数和抽象类概念。 9.掌握用抽象类和多态性实现编程的方法。 【实验内容】

1.分析程序,写出下列程序的运行结果: (1) #include

class Base {

private: int base_priv_dat; protected: int base_prot_dat; public: void base_show(); };

class Derived:public Base {

private: int derived_priv_dat; public: void derived_show(); };

void Base::base_show() { base_priv_dat=1; //基类函数可以操纵私有和保护型基类数据 base_prot_dat=2; cout<<\ <<\}

void Derived::derived_show() { derived_priv_dat=3; base_prot_dat=4; //派生函数可以处理保护型基类数据,但不能处理私有基类数据 cout<<\ <<\ base_show(); //派生函数可以调用公有基类函数

}

int main() { Derived d_obj; d_obj.base_show(); //可用派生对象调用基类函数 d_obj.derived_show(); return(0); }

(2) #include

#include class Person {

public: Person(const char* s) //带参数的构造函数 { name=new char[strlen(s)+1]; strcpy(name,s); } ~Person(){delete []name;} //析构函数做清理工作 char *GetName(){return name;} protected: char *name; };

class Student:public Person { char *major; public: Student(const char * s,const char *m):Person(s) //派生类构造函数 {major=new char[strlen(m)+1];strcpy(major,m);} ~Student(){delete[] major;} //派生类析构函数 char *GetMajor(){return major;} };

int main() { Student stu(\ cout<<\ <

2.编译运行下列程序,分析出现编译错误的原因,并给出解决办法。

#include class Base {

protected: int a; public: Base(){a=30;} };

class B1:public Base {

public: B1(){cout<<\};

class B2:public Base {

public: B2(){cout<<\};

class Derived:public B2,public B1 {

public: Derived(){cout<<\};

int main() { Derived d; return(0); }

3.开发一个简单的大学人员管理程序,该程序可以管理大学的一些基本人员:学生(student)、教师(teacher)、教授(professor)。首先设计一个虚基类person。通过该类保存人员的最基本信息:姓名(name)、年龄(age)和性别(sex)。然后使用该类派生出学生类student和教师类teacher,在其中添加各自的特性,如在student类中添加如下信息:专业(speciality),在teacher类中添加院系(department)等。还有部分教师在工作的同时在职修读学位,因此同时具有教师和学生双重身份,所以由student类和teacher类再次派生出stuTeacher类。为每个类定义一个输出函数print(),输出该类相关信息。

4.用运算符重载设计有理分数类,实现+、-、*、/等操作。 提示:

创建一个有理分数类Rational,有两个数据成员,一个构造函数,四个运算符重载函数,一个显示函数和一个约简函数。其中数据成员有分子numerator和分母denominator,构造函数可以避免分母为0,对不是约化型的分数进行约化。显示函数显示计算结果。约简函数对分数进行化简。

5.用运算符重载设计复数类,实现复数的+、-、*、/运算。

6.某学校对教师每月工资的计算规定如下:固定工资+课时补贴。教授的固定工资为5000元,每个课时补贴50元。副教授的固定工资为3000元,每个课时补贴30元。讲师的固定工资为2000元,每个课时补贴20元。定义教师抽象类,派生不同职称的教师类,编写程序求若干个教师的月工资。

注:4、5选做一题。 【思考题】

1.组合与继承的区别是什么?

2.公有继承、保护继承和私有继承分别在什么情况下使用? 3.什么是虚基类?有何作用?

4.静态联编和动态联编有什么区别? 5.简述空的虚函数与纯虚函数的区别? 6.简述抽象类和具体类的区别?

#include class Base {

private: int base_priv_dat; protected: int base_prot_dat; public: void base_show(); };

class Derived:public Base {

private: int derived_priv_dat; public: void derived_show(); };

void Base::base_show() { base_priv_dat=1; //基类函数可以操纵私有和保护型基类数据 base_prot_dat=2; cout<<\ <<\base_prot_dat=\}

void Derived::derived_show() { derived_priv_dat=3; base_prot_dat=4; //派生函数可以处理保护型基类数据,但不能处理私有基类数据 cout<<\ <<\ base_show(); //派生函数可以调用公有基类函数 }

int main() { Derived d_obj; d_obj.base_show(); //可用派生对象调用基类函数 d_obj.derived_show(); return(0); }

#include #include class Person {

public: Person(const char* s) //带参数的构造函数 { name=new char[strlen(s)+1]; strcpy(name,s); } ~Person(){delete []name;} //析构函数做清理工作 char *GetName(){return name;} protected: char *name; };

class Student:public Person { char *major; public: Student(const char * s,const char *m):Person(s) //派生类构造函数 {major=new char[strlen(m)+1];strcpy(major,m);} ~Student(){delete[] major;} //派生类析构函数 char *GetMajor(){return major;} };

int main() { Student stu(\ cout<<\ Major is:\ <

#include class Base {

protected: int a; public: Base(){a=30;} };

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库实验四类的继承与多态实验在线全文阅读。

实验四类的继承与多态实验.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/447083.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: