数据的共享和保护以及多态性课案_第1页
数据的共享和保护以及多态性课案_第2页
数据的共享和保护以及多态性课案_第3页
数据的共享和保护以及多态性课案_第4页
数据的共享和保护以及多态性课案_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验四 数据的共享和保护以及多态性实验目的1 学习数据的共享和保护。2 学习使用虚函数实现动态多态性。实验内容1 声明一个 Dog 类,自行分析设计出其可以拥有的静态数据成员和静态成员函数, 设 计完整程序并测试这个类, 请分析写出静态数据成员和静态成员函数的功能和用 法。2. 声明类X、Y、Z。实现:Y的成员函数可以访问 X的私有数据成员,Z的成员函 数可以访问 X 的数据成员。用多文件结构实现以上功能。 (各类中的数据成员和函 数成员 请自行思考设计 )3. 声明一个 Vehicle (车)基类,有 Run、Stop等成员函数,由此派生出bicycle (自 行车)类和 motorcar

2、(汽车)类,从 bicycle类和 motorcar类派生出 motorcycle (摩 托车)类,它们都有 Run、Stop等成员函数。实现并测试这些类,注意虚基类和虚 函数的使用。4. 对people类重载"=”运算符和"=”运算符,"=”运算符判断两个people类对象的id属性的大小;"=”运算符实现 people类对象的赋值操作。附:people类的属性:number (编号)、sex (性别)、birthday (出生日期)、id (身份证号)等 等。其中“出生日期”声明为一个“日期”类内嵌子对象。三、实验注意事项程序中,需要编写一个可执行函

3、数与 main 主调函数,自主设计输入、输出值,使得结 果可以由控制台显示输出。四、实验程序代码程序 1#include <iostream>#include <string>using namespace std;class Dogpublic:Dog() age = 1; sex = "male" weight = 1.0;Dog(int _age, string _sex, double _weight):age(_age), sex(_sex), weight(_weight) Dog()void setDog(int _age, strin

4、g _sex, double _weight)age = _age;sex = _sex;weight = _weight;void showDog()cout<<"age = "<<age<<", sex = "<<sex.c_str()<<", weight = "<<weight<<endl;private:int age; string sex;double weight;int main()Dog d1, d2(10, "femal

5、e", 20.0);d1.showDog();d2.showDog();d1.setDog(8, "female", 50);d1.showDog();cin.get();return 0;程序 2#include<iostream>using namespace std;class X;class Z;class Ypublic:void g(X* pa);class Xint i;public:X() i=0; void disp() cout <<"i=" <<i <<endl; frien

6、d void Y:g(X* pa);friend class Z;friend void h(X* pa);class Zpublic:void f(X* pa) pa->i += 5; ;void Y:g(X* pa) pa->i+; void h(X* pa) pa->i += 8; int main()X x;Y y;Z z;y.g(&x);x.disp();z.f(&x);x.disp();h(&x); x.disp();return 0;程序 3#include<iostream>using namespace std;class

7、 Vehiclepublic:virtual void Run()cout<<"V ehicle:Run calledn"virtual void Stop()cout<<"Vehicle:Stop calledn"class motorcar:public Vehiclepublic:void Run()cout<<"motorcar:Run calledn"virtual void Stop()cout<<"motorcar:Stop calledn" ;clas

8、s bicycle :public Vehiclepublic:virtual void Run()cout<<"bicycle:Run calledn"void Stop()cout<<"bicycle:Stop calledn"class motorcycle:public bicycle,public motorcarpublic:void Run()cout<<"motorcycle:Run calledn"void Stop()cout<<"mototrcycle:S

9、top calledn"int main()Vehicle ve; bicycle bi; motorcar mo; motorcycle mocy; Vehicle *pclass=&ve; pclass->Run(); pclass->Stop(); pclass=&bi; pclass->Run(); pclass->Stop(); pclass=&mo; pclass->Run(); pclass->Stop();程序 4 #include<iostream> #include<string>

10、 using namespace std; class date /日期类private:int year,month,day;public:void setdate(int y=0,int m=0,int d=0);/带默认形参值的成员函数void showdate();void date:setdate(int y,int m,int d)/内联成员函数cin>>y>>m>>d;year=y;month=m;day=d;void date:showdate() cout<<year<<"-"<<mo

11、nth<<"-"<<day<<endl;class people private:int num;char sex;date birth;/"日期类内嵌子对象string id;public:people()/构造函数people(int n,char s,date b,string i) num=n;sex=s;birth=b;id=i;people operator =(const people &p);/ 符号重载函数实现people operator =( const people &p);people(

12、people &p); / 拷贝构造函数void setpeople(); / 属性值录入void showpeople(); / 属性值显示;people:people(people &p) / 定义拷贝构造函数num=p.num;sex=p.sex;birth=p.birth;id=p.id;void people:setpeople()cout<<" 录入人员信息 "<<endl;cout<<"请输入编号:";cin>>num;cout<<" 请输入性别 (m/f

13、): "cin>>sex;cout<<"请输入出生日期:";birth.setdate();cout<<" 请输入身份证号 : ";cin>>id;void people:showpeople() / 对象函数实现cout<<""<<num<<" 号人员信息 "<<endl;cout<<" 人员编号 : "<<num<<endl;cout<<&

14、quot; 人员性别 : "<<sex<<endl;cout<<" 出生日期 : ";birth.showdate();cout<<" 身份证号 : "<<id<<endl;people people:operator =(const people &p)if(p.id=id) cout<<"id 相等! "<<endl;else cout<<"id 不相等! "<<endl;

15、return *this;people people:operator =(const people &p) id=p.id;num=p.num;sex=p.sex;birth=p.birth; return *this;int main()people p1,p2;p1.setpeople();p1.showpeople();p2.setpeople();p2.showpeople(); cout<<""<<endl; cout<<"p1=p2:"<<endl;p1=p2; cout<<

16、;""<<endl; cout<<"p1=p2:"<<endl;p1=p2;p1.showpeople();p2.showpeople();return 0;五、实验运行结果程序1' CiU s er$fa nyjDo cu mentsC - F reeT e mage = 1, sex = male.,训eight = 1age - 10, sex - femalej weight - 20ae = 8, sex = female, weight = 50请按任意键继续 程序2 "C:U5ersfanyjDocumentsC- Frei = li = 14请按任意键继续.程序3" C:U ersf a nyjDo cu m enehic1e:Run called Vehicle:Stop called >icycle:Run called )icycle;:Stop called notorcar:Run called notorcar:Stop called

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论