1、C+daimaC+面向对象程序设计实验报告学 生 姓 名 尚 云 飞 学 号 0640842098 院(系)、专业 信息工程系、电子信息工程 指 导 教 师 赵 乘 麟 2007年12月262007年1月3 实验一 类和对象一、 实验目的 1、了解和并掌握类和对象的概念 2、理解类和对象的关系 3、学会定义类和类的对象二、 实验环境硬件:联想 488E 商用机 软件 :操作系统windows xp 编译环境VC+ 6.0三、 实验程序1 检查下面的程序,找出其中的错误,并改正。然后上机调试,使之能正常运行。运行时从键盘输入时、分、秒的值,检查输出是否正确。调试后的程序:#includeusin
2、g namespace std;class Time public: void set_time();void show_time();int hour; int minute; int sec; ;int main()Time t;t.set_time();t.show_time();return 0;void Time:set_time()cinhour; cinminute; cinsec;void Time:show_time()couthour:minute:secendl;2 改写上程序,要求:(1) 将数据成员改为私有的;(2) 将输入和输出功能改为由成员函数实现;(3) 在类体
3、内定义成员函数。程序: #includeusing namespace std;class Timepublic:void set_time();void show_time();private:int hour;int minute;int sec;int main() Time t; t.set_time(); t.show_time();return 0;void Time:set_time(void)cinhour; cinminute; cinsec; void Time:show_time(void)couthour:minute:secendl;3程序:#includeusing
4、 namespace std;class Timepublic: void set_time(); void show_time(); private: int hour; int minute; int sec; int main() Time t; t.set_time(); t.show_time(); return 0; void Time:set_time(void) cinhour; cinminute; cinsec; void Time:show_time(void) if(sec=60) minute+=sec/60;sec=sec%60 ; if(minute=60) ho
5、ur+=minute/60;minute=minute%60 ; if(hour=24) hour=hour%24; couthour:minute:secendl; 四、 实验结果程序1、2、3结果分别如下:1五、 实验结论: 对于类和对象,类是对象的抽象,而对象是类的具体实现。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是C+语言的基础,因此深刻的理解和掌握类的定义方法是学好这门语言的关键。同时经常上机操作是非常有必要的,一方面可以熟悉VC+6.0,另一方面加深对类概念的理解。实验二 关于类和对象的进一部讨论一、 实验目的1更深入地理解类和对象 2掌握构造函数和析构函数定义方法
6、和作用 3理解和掌握对象指针、this指针、常对象成员、静态成员 4明白友元函数,并且能真确地运用。二、实验环境硬件:联想 488E 商用机 软件 :操作系统windows xp 编译环境VC+ 6.0三、 实验程序a) 分析下面的程序,写出其运行时的输出的结果。程序: #includeusing namespace std;class Datepublic: Date(int,int,int); Date(int,int); Date(int); Date(); void display();private: int month; int day; int year; ;Date:Date(
7、int m,int d,int y):month(m),day(d),year(y)Date:Date(int m,int d):month(m),day(d)year=2005;Date:Date(int m):month(m)day=1;year=2005;Date:Date() month=1;day=1;year=2005;void Date :display()coutmonth/day/yearendl;int main() Date d1(10,13,2005); Date d2(12,30); Date d3(10); Date d4; d1.display(); d2.dis
8、play(); d3.display(); d4.display(); return 0;2如果将上题中程序的第5行改为用默认参数,即 Date(int=1,int=I,int=2005);分析程序有问题。上机编译,分析出错信息,修改程序使之能通过编译。要求保留上面一行给出的构造函数,同时能输出与第2题的程序相同的输出结果。调试后的程序: #includeusing namespace std;class Datepublic:Date(int=1,int=1,int=2005); void display();private:int month;int day;int year;; Date
9、:Date( int m,int d ,int y) month=m;day=d;year=y; void Date :display()coutmonth/day/yearendl;int main()Date d1(10,13,2005);Date d2(12,30);Date d3(10);Date d4; d1.display();d2.display();d3.display(); d4.display(); return 0;3建立一个对象数组,内放5个学生的数据(学号、成绩),用指针向数组首元素,输出第1,3.,5个学生的数据。#includeusing namespace st
10、d;class Studentpublic: Student(int n,float s):num(n),score(s) void display(); private: int num; float score; void Student:display()coutthe numeber isnumendl; coutthe score isscoredisplay(); (p+2)-display(); (p+4)-display();return 0; 4、建立一个对象数组,内放5个学生的数据(学号,成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生成绩
11、最高者,并输出学号! 程序:#include using namespace std; class Student public: Student(int n,float s):number(n),score(s) int number; float score; ; void max( Student *y) float t; int k; for(int i=0;i4;i+) for(int j=0;jscore(y+i+1)-score) t=(y+i)-score; (y+i)-score=(y+i+1)-score; (y+i+1)-score=t; k=(y+i)-number;
12、;(y+i)-number=(y+i+1)-number; (y+i+1)-number=k; cout成绩最高者 score 学号 number endl; int main() Student stud5= Student(1001,75), Student(1002,88.5), Student(1003,95.5), Student(1004,82), Student(1005,95); max( stud); return 0; 四、 实验结果程序1、2、3、4结果分别如下:五、 实验结论: 对于构造函数的使用,定义了带默认参数的构造函数,就不能再定义构造函数的重载了。同时还需要注意构造函数和析构函数的调用顺序,先构造的后析构,后构造的先析构,当然应该注意特殊情况。对于数组和指针的运用也是关键。实验三 运算符重载一、实验目的1. 理解并掌握运算符重载的定义。2、理解运算符的实质是函数的重载并能利用运算符的重载来解决问题。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1