1、实验三、类和对象(10学时)一、实验目的1掌握声明类的方法,类和类的成员的概念以及定义对象的方法。2初步掌握用类和对象编制基于对象的程序。3学习检查和调试基于对象的程序。4掌握类的构造函数和析构函数的概念和使用方法。5掌握对象数组、对象的指针及其使用方法。6掌握共用数据的保护方法二、实验内容1检查下面的程序,找出其中的错误,并改正之。然后上机调试,使之能正常运行。(1)#include using namespace std; class Clock void set_clock(void); void show_clock(void); int hour; int minute; int s
2、econd;Clock clock; int main() set_clock(); show_clock (); int set_clock(void) cint.hour; cint.month; cint.second; int show_clock(void) coutt.hour:t.minute:t.secondendl; (2)#include using namespace std;class Apublic: void A(int i=0)m=i; void show()coutm; void A()private: int m;int main() A a(5);a.m+=
3、10;a.show();return 0;(3)class X private: int a=0; int &b; const int c; void setA(int i)a=i; X(int i) a=i;public: int X() a=b=0; X(int i, int j, int k) a=i; b=j; c=k; setC(int k) const c=c+k;int main() X x1; X x2(2); X x3(1,2,3); x1.setA(3); return 0;2请先阅读下面的程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。(1) #
4、include using namespace std;class test public:test( ); int getint( )return num; float getfloat( )return fl; test( ); private:int num; float fl; ; test:test( ) cout Initalizing default endl; num=0;fl=0.0; test:test( )cout Destructor is active endl; int main( ) test array2; cout array1.getint( ) array
5、1.getfloat( ) endl; return 0;(2)#includeusing namespace std;#includeclass Xpublic: X(int x1,char *x2,float x3):a(x1),c(x3) b=new charsizeof(x2)+1; strcpy(b,x2); X():a(0),b(X:X(),c(10) X(int x1,char *x2=X:X(.),int x3=10):a(x1),b(x2),c(x3) X(const X &other) a=other.a; b=X:X(const X &other); c=other.c;
6、 void print() couta=atb=btc=cprint(); B.print();C.print();D.print(); return 0;3某单位的职工工资包括基本工资Wage,岗位津贴Subsidy,房租Rent,水费WaterFee,电费ElecFee。设计实习工资管理的类Salary,该类的形式如下:class Salarypublic:Salary()初始化工资数据的各分项数据为0Salary() 初始化工资数据的各分项数据void setXX(double f) XX=f; double getXX() return XX; double RealSalary()
7、/计算实发工资Private: double Wage, Subsidy, Rent, WaterFee, ElecFee;其中,成员函数setXX()用于设置工资的各分项数据,成员函数getXX()用于获取工资的各分项数据,XX代表Wage、Subsidy等数据成员,如Wage对应的成员函数则为setWage()和getWage()。 实发工资=Wage+Subsidy-Rent-WaterFee-ElecFee编程完善该类的设计,并在主函数中测试该类的各成员函数。4设计一个时钟类Clock。数据成员包括hour(小时)、minute(分钟)、second(秒)。要求用成员函数实现以下功能:
8、(1)创建具有指定时钟(小时、分钟、秒)的Clock对象,默认时钟为00:00:00。(2)动态地设置时、分、秒。(3)在屏幕上按“时:分:秒”的格式显示时钟。(4)在主函数中测试该类。5设计一个职工类Employee。数据成员包括字符串型的name(姓名)、street(街道地址)、city(市)、province(省)、postalcode(邮政编码)。要求用成员函数实现以下功能:(1)创建职工对象时,可以按不同方式指定职工信息。(2)动态地设置职工对象信息。(3)在屏幕上打印职工信息。(4)在主函数中测试该类。6需要求3个三角形的体积,请编写一个基于对象的程序。数据成员包括三角形的三边长
9、a、b、 c。要求用成员函数实现以下功能: (1) 定义构造函数完成三角形的初始化;(2) 求三角形的周长;(3) 求三角形的面积;(4) 输出三角形信息。7下面是一个整型数组类intArray的声明,请给出该类所有数据成员的类外定义。class intArraypublic:intArray(int size);/构造函数intArray(const intArray &x);/复制构造函数intArray();/析构函数bool Set(int i, int elem);/设置第i个数组元素的值,设置成功返回true,失败返回falsebool Get(int i, int &elem);
10、 /获取第i个数组元素的值,获取成功返回true,失败返回falseint Length( ) const;/获取数组的长度void ReSize ( int size ); /重置数组void Print();/输出数组private:int *element; /指向动态数组的指针int cursize; /数组的当前实际长度int maxsize; /数组的最大长度;8下面是一个整型链表类intList的声明,请给出该类所有数据成员的类外定义。class intListprotected: struct Node Node * next; int data; ; Node *Head;p
11、ublic: intList();/构造函数intList(); /析构函数/向链表的第i个位置插入一个元素,插入成功返回true,失败返回falsebool Insert(int i, int elem); /删除链表的第i个位置的元素,删除成功返回true,失败返回false bool Remove(int i, int &elem) ;int *Find(int elem)const; /查找值为elem的元素,返回指向该元素的指针int Length( ) const;/返回链表长度 void Printlist();/输出链表;9下面是一个整型堆栈类intStack的声明,请给出该类所有数据成员的类外定义。class intStackpublic:intStack (int size=10);/构造函数intStack ();/析构函数bool Push(int elem);/入栈操作bool Pop(int &elem); /出栈操作int Length( ) const; /获取栈中元素的个数private:int *data; /指向动态数组的指针int top; /栈顶指针int size; /堆栈的容量;