C++面向对象的试验报告要点_第1页
C++面向对象的试验报告要点_第2页
C++面向对象的试验报告要点_第3页
C++面向对象的试验报告要点_第4页
C++面向对象的试验报告要点_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、C+实验报告专业:网络工程班级:113班学号:119074361姓名:管庶龙实验三函数的应用一、实验目的1、掌握函数的定义和调用方法。2、练习重载函数使用3、练习函数模版的使用4、练习使用系统函数二、实验任务1、编写一个函数把华氏温度转化为摄氏温度,转换公式为:C=(F-32)*5/9.2、编写重载函数 Maxi可分别求取两个整数。三个整数,两个双精度数,三个双精度数的 最大值。3、使用重函数模版重新实现上小题中的函数Maxi.4、使用系统函数 pow(x,y)计算想xy的值,注意包含头文件 math.h。5、用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。三、实验步骤1、编

2、写函数 float Convert(float TempFer),参数的返回值都为float类型,实现算法C=(F-32)*5/9,在main()函数中实现输入、输出。程序名为 lab3_1.cpp。2、分别编写四个同名函数max1,实现函数重载,在main()函数中测试函数功能。程序名:lab3_2.cpp。3、使用函数模版实现求任意类型数的最大值,针对不同的参数个数, 编写两个同名的函数模版max1,其参数个数不同,实现函数重载,在main()函数中测试函数的功能。程序名:lab3_3.cpp。4、在main()函数中提示输入两个整数x,y,使用cin语句得到x,y的值,调用pow(x,y

3、)函数计算x的y次哥的结果,再显示出来。程序名:lab3_4.cpp。5、编写递归函数int fib(int n),在主程序中输入 n的值,调用fib函数计算Fibonacci级数。 公式为 fib(n)=fib(n-1)+fib(n-2),n>2;fib(1)=fib(2)=1。使用 if 语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:lab3_5.cpp。四、体会1、初步掌握C+中函数调用。2、与C语言中函数调用并没有多大区别。五、程序代码Lab3_1.cpp#include <iostream> using namespace std; double

4、FtoC(double F)(return (F-32)*5/9;int main()(double F,c;cout<<"input F:"cin>>F;c=FtoC(F);cout<<c<<endl;Lab3_2.cpp:#include<iostream> using namespace std; int max(int a,int b)(return(a>b)? a:b);int max(int a,int b,int c)(int d=max(a,b);return(c>d)? c:d);do

5、uble max(double a,double b)(return(a>b? a:b);double max(double a,double b,double c) (double d=max(a,b);return(c>d? c:d);int main()(int a,b,c;double x,y,z;cout<<"input three int:"cin>>a;cin>>b;cin>>c;cout<<"input three double:"cin>>x;cin&g

6、t;>y;cin>>z; cout<<max(a,b)<<endl; cout<<max(a,b,c)<<endl; cout<<max(x,y)<<endl;cout<<max(x,y,z)<<endl;Lab3_3.cpp#include <iostream>#include <cmath> using namespace std; int main()double x;int y;cout<<”请输入两个数:”;cin>>x&g

7、t;>y;cout<<"x 的 y 次方="<<pow(x,y)<<endl;Lab3_4.cpp#include<iostream>#include<string>using namespace std;template<class T>T cmax(T a,T b)(return (a>b?a:b);template<class A>A cmax(A a,A b,A c)(A d=a>b?a:b;return (c>d?c:d);int main()(int a,

8、b,c;double x,y,z;cout<<"input three int:"cin>>a;cin>>b;cin>>c;cout<<"input three double:"cin>>x;cin>>y;cin>>z;cout<<cmax(a,b)<<endl; cout<<cmax(a,b,c)<<endl; cout<<cmax(x,y)<<endl; cout<<cma

9、x(x,y,z)<<endl;Lab3_5.cpp:#include<iostream>using namespace std;int fib(int n);int main()(int n,answer;cout<<"Enter number:"cin>>n;cout<<"nn"answer=fib(n);cout<<answer<<"is the"<<n<<"th Fibonnaci numbern" r

10、eturn 0;int fib(int n)if(n<3)return 1;elsereturn fib(n-2)+fib(n-1);实验四类与对象一、实验目的3、掌握类的声明和使用。4、掌握类的声明和对象的声明。5、复习具有不同访问属性的成员的访问方式。6、观察构造函数和析构函数的执行过程。7、学习类的组合使用方法。8、使用VC+的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员 函数的执行顺序。二、实验任务1、声明一个 CPU类,包含等级(rank)、频率(frequency) 电压(voltage)等属性,有 两个公有成员函数run、stop。其中,rank为枚

11、举类型 CPU_Rank ,声明为 enumCPU_RankP1=1,P2,P3,P4,P5,P6,P7 , frequency 为单位是 MHz 的整型数,voltage 为 浮点型的电压值。观察构造函数和析构函数的调用顺序。2、声明一个简单的 Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom) 等等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。3、(选作)设计一个用于人事管理的People (人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:num

12、ber (编号)、sex(性别)、birthday (出生日期)、id (身份证号)等等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现 对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员 函数、组合。三、实验步骤1、首先定义枚举类型 CPU_Rank,例如 enum CPU_RankP1=1,P2,P3,P4,P5,P6,P7,再定义 CPU类,包含等级(Rank),频率(frequency),电压(volatage),等私有数据成员,定义成 员函数run、stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示信息。在主程序中定义一个 CP

13、U类的对象,调用其成员 函数,观察类对象的构造与析构顺序, 以及成员函数的调用。程序名:lab4_1.cpp.2、首先依次定义 CPU类,RAM类,CDROM 类,run、stop作为她们的成员函数,然后 定义 Computer 类,cpu,ram,cdrom 为 Computer 的内部成员。程序名:lab4_2.cpp.3、首先安定义一个 Date类,内含私有成员 year,month,day。再定义一个 Peolple类,内含 私有成员num, sex ID , Date birthday。再调用构造函数,析构函数,拷贝构造函数 程序名:lab4_3.cpp。四、体会1、清楚的明白了类的

14、定义和对象的声明。2、了解了构造函数,析构函数,拷贝构造函数的执行过程。五、程序代码Lab4_1.cpp#include<iostream>using namespace std;class CPU(public:CPU(int fre,float vol):frequency(fre),voltage(vol)(cout<<“成功调用构造函数"<<endl;CPU()cout<<“成功调用析构函数"<<endl;void run();void stop();private:enum CPU_RankP1=1,P2

15、,P3,P4,P5,P6,P7rank;int frequency;float voltage;void CPU:run()cout<<"等级:"<<P1<<endl;cout<<"频率:"<<frequency<<endl;cout<<"电压:"<<voltage<<endl;void CPU:stop()cout<<"程序结束!"<<endl;int main()CPU cpu(1

16、20,380);cpu.run();cpu.stop();return 0;Lab4_2.cpp#include<iostream>using namespace std;class CPUpublic:CPU(int fre,float vol):frequency(fre),voltage(vol) cout<<"成功调用构造函数 "<<endl;-CPU()cout<<“成功调用析构函数"<<endl; void run();void stop();private:enum CPU_RankP1=1

17、,P2,P3,P4,P5,P6,P7rank;int frequency;float voltage;void CPU:run()cout<<"程序开始执行"<<endl;cout<<"等级:"<<P1<<endl;cout<<"频率:"<<frequency<<endl;cout<<"电压:"<<voltage<<endl;void CPU:stop()cout<<&qu

18、ot;程序结束!"<<endl;class RAMpublic:RAM(int cap,float fre):capacity(cap),frequency(fre)cout<<“成功调用构造函数"<<endl;-RAM()cout<<“成功调用析构函数"<<endl;void run();void stop();private:enum RAM_TypeDRR=1,DDR2,FPM,EDO,SDRAM,RDRAMtype;int capacity;float frequency;void RAM:run

19、()cout<<"类型:"<<DRR<<endl;cout<<"容量:"<<capacity<<endl;cout<<"工作频率:"<<frequency<<endl;)void RAM:stop() ()class CDROM(public:CDROM(int rat,int cac):rate(rat),cache(cac) (cout<<“成功调用构造函数"<<endl;)CDROM()c

20、out<<“成功调用析构函数"<<endl;) void run();void stop();private:int rate;int cache;);void CDROM:run() cout<<"倍速:"<<rate<<endl; cout<<"缓存:"<<cache<<endl;) void CDROM:stop() )class Computerpublic:Computer(CPU &c,RAM &r,CDROM &

21、cd):cpu(c),ram(r),cdrom(cd) cout<<"构造了一台计算机!"<<endl;Computer()cout<<"析构了 个 Computer!”<<endl; void Run()cpu.run();ram.run();cdrom.run();) void Stop() (cdrom.stop();ram.stop();cpu.stop();cout<<“计算机结束运行了 !"<<endl;)private:CPU cpu;RAM ram;CDROM cdr

22、om;);int main()(CPU cpu(60,220);RAM ram(2048,667);CDROM cdrom(18,2);Computer Computer(cpu,ram,cdrom);Computer.Run();Computer.Stop(); return 0;)Lab4_3.cpp#include <iostream>#include <string> using namespace std;class Date 日期类(private: int year; int month;int day;public:Date()< /默认构造Dat

23、e(int y,int m,int d) / 带参构造 ( year=y;month=m;day=d;) void set() /设置数据函数 (cin>>year>>month>>day;)void display()( cout<<year<<"年"<<month<<"月"<<day<<"日"; );class Person( private: int num; char sex; Date birthday;char ID

24、18;public:Person() /默认构造Person(int n,int y,int m,int d,char id18,char s='m'):birthday(y,m,d) num=n;sex=s;strcpy(ID,id);”/有默认值的带参构造Person(Person& p) 拷贝构造 num=p.num;sex=p.sex;birthday=p.birthday;strcpy(ID,p.ID); void input() / 输入函数 cout<<”录入数据:"<<endl;cout<<“编号:"

25、;cin>>num;cout<<“性另1J (m/f):"cin>>sex;cout<<“生日:"birthday.set();cout<<"身份证号:cin>>ID;ID18='0'cout<<endl;)void output() / 输出函数( cout<<"编号:"<<num<<endl;cout<<“性别:"<<sex<<endl;cout<<

26、“生日:"birthday.display();cout<<endl;cout<<“身份证号:"<<ID<<endl;)Person() 析构函数( cout<<" "<<num<<”号人员已经录入"<<endl;);int main()(Person p1; p1.input(); p1.output(); return 0;)实验五C+程序的结构一、实验目的1、观察程序运行中的变量的作用域、生存期和可见性。2 .学习类的静态成员的使用。3 .学习

27、多文件结构在 C+程序中的使用。二、实验任务1.运行下面程序,观察变量 x、y的值。/lab2_1.cppinclude 口至整宫必.void fnl (>imt x = I - y 2iirn main() r icom «"Begin. , , " «endLcoutWn *«cndlicom V<"y=" W岁 «endl ?cout «Tvulu£Ht? x and y in nmin( 1. , r Jr <Xendl;int x _ 10( y = 20(coufc

28、ant = " Wycuut «卞tp inlu fnl f "<<End fnl()tcom 'Ikiuk in main" EVundhci W&a" Wx Wgdl icout <U"y = " Wy «endl irtrlurn 0i,I Ivoid fnl ()int y = 200:tout «、 ' W工 VOndl icoui W"v = " Wy Wend】;3、实现客户机(CLIENT )类。定义字符型静态数据成员Serve

29、rName,保存其服5.务器名称:整型静态数据成员ClientNum ,记录已定义的客户数量;定义静态函数 ChangeServerName ()改变服务器名称。在头文件client.h中定义类,10在文件client.cpp 中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况。三、实验步骤1、运行程序lab5_1,观察程序输出。 全局变量的作用域,在整个程序运行期间有效,但如果在局部模块中定义了同名的变量,则在局部模块中,可见的是局部变量,此时全局变量 不可见;而局部变量的生存期只限于相应的程序模块中,离开相应的程序模块,局部变 量x, y就不再存在,此时同名的全局

30、变量重新可见。2、新建一个空的项目lab5_2,添加头文件client.h,在其中定义类CLIENT ,注意使用编译预 处理命令;再添加源程序文件client.cpp,在其中实现CLIENT类,注意静态成员变量的使用方法,再添加文件 lab5_2.cpp。在其中定义 main()函数,测试CLIENT类,观察相 应的成员变量取值的变化情况。四、体会1、初步了解静态成员的使用。2、学习多文件在C+结构的应用。五、程序代码Lab5_2.cpp#include <iostream.h>#include <string.h>using namespace std;class C

31、LIENTprivate:static char ServerName;static int ClientNum;public:CLIENT();CLIENT();static int GetClientNum();static void ChangServerName(char name);static char GetServerName();CLIENT:CLIENT()ClientNum+ ;CLIENT:CLIENT()ClientNum- ;int CLIENT:GetClientNum()return ClientNum;)void CLIENT:ChangServerName(

32、char name)(ServerName=name;)char CLIENT:GetServerName()(return ServerName;)#include <iostream.h>int CLIENT:ClientNum = 0;char CLIENT:ServerName= 'A'int main()(CLIENT a;CLIENT b;cout << "服务器名称为:"<< CLIENT:GetServerName() << endl;CLIENT:ChangServerName('G&

33、#39;);cout << "客户机数量为:"<< CLIENT:GetClientNum() << endl;cout << "服务器名称为:"<< CLIENT:GetServerName() << endl; )实验六数组、指针和字符串一、实验目的1、学习使用数组。2、学习字符串数据的组织和处理。3、掌握指针的使用方法。4、练习通过debug观察指针的内容及其所指的对象的内容。5、练习通过动态内存分配实现动态数组,并体会指针在其中的作用。二、实验任务1、编写并测试3*3矩阵转置

34、函数,使用数组保存 3*3矩阵。2、使用动态内存分配生成动态数组来重新设计一个3X3矩阵转置函数,使用指针实现函数的功能。3、编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。4、使用String类定义字符串对象,重新实现上一小题。5、(选作)定义一个 Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及 change_name ()和display ()等函数。display。显示姓名、街道地址、城市和邮编 等属性,change_name()改变对象的姓名属性。实现并测试这个类。(提示:对字符数组的赋值可以使用字符串拷贝函数strcpy (char * ,

35、char* , name)。6、(选作)定义包含个 5元素的对象数组,每个元素都是Employee类型的对象。三、实验步骤1、编写矩阵转置函数,输入参数为3*3整型数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输出。程序名:lab6_1.cpp。2、改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中new操作符分配内存生成动态数组。程序名:lab6_2.cpp。3、编程实现两字符串的连接,定义字符数组保存字符串,在程序中提示用户输入两个字符 串,实现两个字符串的连接,最后用cout语句输出。程序名:

36、lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是 ASCII码0,使用循环语句进行字符串间的字符拷贝。4、使用string类定义字符串对象,编程实现两字符串的连接。在 string类中已重载了运算 符“ + =”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。5、在employee.h文件中定义 Employee类,Employee类具有姓名、街道地址、城市和邮遍等 私有数据成员,都可以用字符型数组来表示,在成员函数中,构造函数用来初始化所有 成员数组,对字符数组的赋值可以使用字符串拷贝函数strcpy(char *,char *name);display()

37、中使用count显示姓名、街道地址、城市和邮遍等属性,chang_name()改变类中表示姓名属性的字符数组类型的数据成员。在主程序中定义这个类的对象并对 其进行操作。程序名:lab6_5.cpp。6、使用上一小题中定义的 Employee类定义对象数组enp5,使用循环语句把数据显示出来。 程序名:lab6_6.cpp。四、体会1、初步了解数组,指针和字符串在C+中编译方式。2、与C语言有一定的不同之处,但也有相同的地方。3、更好的应用数组,指针和字符串问题的编译。五、程序代码Lab6_1.cpp#include <iostream> using namespace std;vo

38、id move (int juzhen33)(int i, j, k;for(i=0; i<3; i+)forQ=0; j<i; j+)(k = juzhen ij;juzhenij = juzhenji;juzhenji = k;)int main()(int i, j;int data33;cout« "输入矩阵的元素 "« endl;for(i=0; i<3; i+)for 0=0; j<3; j+) (cout« "第"VV i+1 « "行第"«j+1

39、 VV”个元素为:cin » dataij;) cout vv ”输入的矩阵的为:"« endl;for(i=0; i<3; i+)(for 0=0; j<3; j+)cout« dataij « " cout« endl;)move(data);cout« "转置后的矩阵的为:"« endl;for(i=0; i<3; i+)( for 0=0; j<3; j+) cout« dataij « "cout« endl;L

40、ab6_2.cpp#include <iostream> using namespace std; void move (int *juzhen)(int i, j, k;for(j=0; i<3; i+) forQ=0; j<i; j+) (k = *(juzhen+i*3+j);*(juzhen+i*3+j) = *(juzhen+j*3+i);*(juzhen+j*3+i) = k;) int main() (int i, j;int *p=new int3*3;cout« "输入矩阵的元素 "« endl;for(i=0;

41、 i<3; i+) for 0=0; j<3; j+) (cout« “第“ VV i+1 « "行第"«j+1 V"个元素为:cin » pi*3+j;) cout vv ”输入的矩阵的为:"« endl;for(i=0; i<3; i+)( for 0=0; j<3; j+) cout« pi*3+j « " cout« endl;)move(p);cout vv ”转置后的矩阵的为:"« endl; for(i=0;

42、 i<3; i+)( for 0=0; j<3; j+) cout« pi*3+j « " cout« endl;)Lab6_3.cpp#include <iostream> using namespace std; int main()int i=0,j=0;char s1100,s250;cout<<"请输入第一个字符串:"cin>>s1;cout<<"请输入第二个字符串:"cin>>s2;while(s1i) i+;while(s2j)s

43、1i+=s2j+;s1i='0'cout<<“连接后的字符串为:"<<s1<<endl;)Lab6_4.cpp#include <iostream>#include<string.h> using namespace std; int main()int i=0,j=0;string s1;string s2;cout<<"请输入第一个字符串 s1:"cin>>s1;cout<<"请输入第二个字符串 s2:"cin>>s2

44、;s1+=s2;cout<<“连接后的字符串为:"<<s1<<endl;)Lab6_5.cpp#include <iostream>#include<string.h> using namespace std; class Employeeprivate:char name20;char address30;char city20;char zip6;public:Employee(char *n,char *add,char *ct,char *z);void change_name(char *n);void displ

45、ay();Employee:Employee(char *n,char *add,char *ct,char *z) (strcpy(name,n);strcpy(address,add);strcpy(city,ct);strcpy(zip,z); void Employee:change_name(char *n) (strcpy(name,n);void Employee:display()(cout<<name<<""<<address<<""cout<<city<<&quo

46、t;"<<zip;int main() (Employee Ep("李伟","雨山路 3号"J 马鞍山","265483");Ep.display();cout<<endl;Ep.change_name("赤6思嘉");Ep.display();cout<<endl;Lab6_6.cpp#include<iostream> using namespace std;class Employee ( private:char name10;char a

47、ddress30;char city20;char zip10;public:Employee(char name口,char address口,char city口,char zip口); void change_name(char name);void display();Employee:Employee(char n,char add,char ct,char z) strcpy(name,n);strcpy(address,add);strcpy(city,ct);strcpy(zip,z);void Employee:change_name(char n1) strcpy(name

48、,n1);void Employee:display() cout<<"name:"<<name<<endl;cout<<"address cout<<"city:"<<address<<endl;:"<<city<<endl;cout<<"zip :"<<zip<<endl;int main() Employee enp5= Employee("李杰"

49、,"华山路","阜阳","236000”), Employee("曹昆","羽山路","全椒","255656"),Employee("王震","湖东路","maanshan","268539"),Employee("余成进”,"湖中路","安庆","265356”),Employee("周幸","

50、江东路","邻国","237200");for(int i=0;i<5;i+)enpi.display(); cout<<endl;return 0;实验七继承和派生一、实验目的1、学习定义和使用类的继承关系,定义派生类。2、熟悉不同继承方式下对基类成员的访问控制。3、学习利用虚基类解决二义性问题。二、实验任务1、定义一个基类 Animal ,有私有整型成员变量 age,构造其派生类dog,在其成员函数 SetAge(int n)中直接给age赋值,看看会有彳f么问题,把age改为公有成员变量,还会有问题吗?编程试试看。2、定

51、义一个基类 BaseClass,有整型成员变量 Number ,构造其派生类 DerivedClass,观察构 造函数和析构函数的执行情况。3、定义一个车(vehicle )基类,具有 MaxSpeed、Weight等成员变量, Run, Sto育成员 函数,由此派生出自行车(bicycle )类、汽车(motorcar)类,自行车类具有高度(Height)等属性,汽车类有座位数( SeatNum)等属性。从bicycle和motorcar类派生出摩托车(motorcycle )类,在继承过程中,注意把vehicl啾置为虚基类。如果不把设置为虚基类,会有什么问题?编程试试看。三、实验步骤1、编

52、写程序定义基类 Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:error C2248: ' age' :cannot access private member declared in classAnimalerror C2248: ' age' :cannot access private member declared in classAnimal把age改为公有成员变量后重新编译就可以了。程序名为:lab7_1.cpp2、编写程序定义一个基类 BassCla

53、ss构造其派生类 DerivedClass,在构造函数和析构函数 中用coutB出提示信息,观察构造函数和析构函数的执行情况。程序名为:lab7_2.cpp。3、用debug功能跟踪程序lab7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。写程序定义一个车(vehicle)基类,由此派生出自行车(bicycle)类、7车类(motorcar)类,注意把vehicle派生为虚基类。再从 bicycled口 motorcar派生出摩托车(motorcycle)类,在main()函数中测试这个类。程序名为:lab7_3.cpp。编译成功后,把vehicl啾置为非虚基类,再编译一次,

54、此时系统报错,无法编译成功。这是因为若不把vehicl酸置为虚基类,会出现二义性错误,程序不能成功编译。四、体会1、了解派生类的定义方法。2、学会了定义和使用类的继承关系。3、学会了虚基类的使用并解决问题。五、程序代码Lab7_1.cpp#include <iostream>using namespace std;class Animal (public:int age;Animal();Animal();class dog:public Animalpublic:dog();dog();void SetAge(int n)age=9;int main()dog a;a.SetAg

55、e(10);return 0;Lab7_2.cpp#include <iostream>using namespace std;class BaseClasspublic:BaseClass() cout << "构造基类对象!" << endl;BaseClass() cout << "析构基类对象!" << endl;class DerivedClass : public BaseClass public:DerivedClass() cout << "构造派生类对象!

56、" << endl;DerivedClass() cout << "析构派生类对象!" << endl; ; int main() DerivedClass d;Lab7_3.cpp#include <iostream>using namespace std;class vehicle(private:int MaxSpeed;int Weight;public:vehicle()MaxSpeed=0; Weight=0;vehicle();void Run() cout << "Now it

57、is running!" << endl; void Stop() cout << "Now it has stopped!" << endl; ;class bicycle : virtual public vehicleprivate:int Height;public:bicycle();bicycle();class motorcar : virtual public vehicleprivate:int SeatNum;public:motorcar();motorcar();class motorcycle : pu

58、blic bicycle , public motorcarpublic:motorcycle ();motorcycle ();int main()motorcycle a; a.Run(); a.Stop();实验八多态性一、实验目的1、掌握运算符重载的方法2、习使用虚函数实现动态多态性。二、实验任务1、定义Point类,有坐标x,y两个成员变量;对 Point类重载“+”、"-”运算符,实现对坐 标值的改变。2、定义一个车(vehicle)基类,有Run、Sto育成员函数,由此派生出自行车( bicycle)类、 汽车(motorcar)类,从bicycled口 motorca

59、r派生出摩托车(motorcycle)类,它们都有 Run、 Sto育成员函数。观察虚函的作用。3、(选做)前面实验中的Peopl联重载“=”运算符和“二”运算符,“=”运算符判断两个Peopl联对象的id属性是否相等;“二”运算符实现People类对象的赋值操作。三、实验步骤1、编写程序定义Point类,在类中定义整型的私有成员变量x,y,定义成员函数Point&operator+();Point operator+(int);以实现对Point类重载"+”运算符,定义成函数 Point& operator .Point operator - -(int);以实现对 Point类重载"-”运算符,实现对 坐标值的改变。程序名:lab8_1.cpp。2、编写程序定义一个车(vehicle)基类,有Run、Stopl成员函数,由此派生出自行车(bicycle) 类、汽车类(motorcar),从bicycle类和motorcar类派生出摩托车类( motorcycle),它 们都有 Run、Sto育成员函数。在 main()函数中定义 vehicle bicycle、motorcar> motorcycle 的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用ve

温馨提示

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

评论

0/150

提交评论