1、 验证 综合 设计 创新 实验日期: 实验成绩:一 实验内容1、 类与对象2、 长方形类 二 实验环境 PC微机,Windows操作系统,Visual C+6.0三 实验代码类与对象:#include cmathusing namespace std;class Pointpublic: Point(int xx=0,int yy=0) X=xx;Y=yy;countP+; cout第countP个Point构造函数被调用; XYendl; Point(Point &p); Point() countP-;Point析构函数被调用 int GetX() return X; int GetY()
2、 return Y; /void GetC() coutObject id=private: int X,Y; static int countP;Point:Point(Point &p) X=p.X; Y=p.Y; countP+; coutPoint拷贝构造函数被调用/类的组合class Line Line (Point xp1,Point xp2); Line (Line &L); double GetLen() return len; Point p1,p2; double len;/组合类的构造函数Line:Line(Point xp1,Point xp2):p2(xp2),p1(
3、xp1)Line构造函数被调用 double x=double(p1.GetX()-p2.GetX(); double y=double(p1.GetY()-p2.GetY(); len=sqrt(x*x+y*y);/组合类的拷贝构造函数Line(Line &L):p2(L.p2),p1(L.p1)Line拷贝构造函数被调用 len=L.len;int Point:countP=0;/主函数int main() Point myp1(1,1),myp2(4,5); Line line(myp1,myp2); Line line2(line);The length of the line is:
4、line.GetLen()The length of the line2 is:line2.GetLen() getchar(); return 0;长方形类: Point(int xx=0,int yy=0) X=xx;/Point类构造函数p) X=p.X;Y=p.Y; /Point类拷贝构造函数class Rectangle Rectangle(Point xp1,Point xp2); /组合类的构造函数 double Area(); /求面积函数Rectangle:Rectangle(Point xp1,Point xp2):p1(xp1),p2(xp2) /求面积函数double
5、Rectangle:Area() return (p1.GetX()-p2.GetX()*(p1.GetY()-p2.GetY();void main() Point myp1(8,5),myp2(6,1); /建立Point类的对象 Rectangle Rec(myp1,myp2); /建立Rectangle类的对象长方形的面积为:Rec.Area()四 实验结果功能实现: -(4)第五章实验 学 号:一、实验内容1、 静态数据成员2、 静态函数成员3、 对象数组4、 友元类,友元函数测试二、实验环境三、实验代码静态数据成员: Point()countP-; void GetC() cout
6、 Point A(4,5);Point A,A.GetX(),A.GetY(); A.GetC(); Point B(A);Point B,B.GetX()B.GetY(); B.GetC();静态函数成员:点类: Point() countP-; static void GetC() cout主文件1:#includepoint.hint i1=3;static int i2=3;void other1();void other2();void fun1();extern void fun2();extern void fun3();void fun3()文件1中的函数fun3()被调用!P
7、oint A, X= Y=A.GetY()Point B, X=B.GetY() Point:GetC();我在这个文件中定义了一个整型变量i1,它具有文件作用域,此时它的值为:i1接着调用函数other1() other1();我在此还定义了一个整型变量i2,但给它加了static修饰,此时它的值为:i2接着调用函数other2() other2(); fun1(); fun2(); fun3();为什么在这里输出的是文件2中的函数fun3()被调用!而不是文件1中的函数fun3()被调用!因为文件2中fun3()前加了static修饰,就将函数的作用域限制在了当前的编译单元,在文件1中不可
8、见!也就不能被文件1中的main函数调用了,同时我还在文件1中定义了一个同名函数fun3(),但其输出的内容不一样,可用来判断到底是哪个文件中函数被调用!实验证明是文件1中函数被调用!endl上面的两个例子说明了一个问题,那就是加了static修饰的变量和函数只能在本文件中执行和调用,不能再在外部文件中被调用,即使是加了extern修饰也不行!主文件2:extern int i1;void other1() i1+;函数other1()被调用,i1的值为:(这里的函数other1()是在另一个.cpp文件中定义的,对i1自加1)extern int i2=2;void other2() i2+
9、;函数other2()被调用,i2的值为:(这里的函数other2()是在另一个.cpp文件中定义的,对i2自加1)为什么在这里i2的值是3而不是4呢?因为在other2()这个文件中,给i2指定值为2,加1后当然为3了那为什么在这里要给i2指定值呢?因为在这个文件中用extern声明i2连接时会出错,i2在文件1中声明为static类型,不能被外部文件引用!void fun1()文件2中的函数fun1()被调用!void fun2()文件2中的函数fun2()被调用!static void fun3()文件2中的函数fun3()被调用!对象数组:员工类:class employeeprote
10、cted: int individualEmpNo; int grade; float accumPay; static int employeeNo; employee(); employee(); void promote(int); void SetaccumPay(float); int GetindividualEmpNo(); int Getgrade(); float GetaccumPay();Main1:#include#include employee.hint employee:employeeNo=1000;employee:employee() individualE
11、mpNo=employeeNo+; grade=1; accumPay=0.0;employee()void employee:promote(int increment) grade+=increment;SetaccumPay(float pa) accumPay=pa;GetindividualEmpNo() return individualEmpNo;Getgrade() return grade;float employee:GetaccumPay() return accumPay;Main2: employee a4; float pa; for(int i=0;ipa; ai
12、.promote(i+1); ai.SetaccumPay(pa);t编号t级别t月薪tai.GetindividualEmpNo()ai.Getgrade()ai.GetaccumPay()友元类测试:Class类:class X; /前向引用声明class Y /定义一个类Y void g(X &x);class X /定义一个类X friend void Y:g(X & /类Y的成员函数是类X的友元函数 friend class Z; /类Z是类X的友元类 friend void h(X & /普通函数h(X &x)是类X的友元函数 X(int I) i=I; int Geti() re
13、turn i; int i;/Y的成员函数f(X &x)的实现部分void Y:x) x.i+;x.iclass Z /定义一个类Z void f(X &/Z的成员函数f(X &x)(也是类Y的友元函数)的实现部分void Z:f(X & x.i+=5;/函数h(X &void h(X & x.i+=10;Main文件:#ifndef class_h #define class_hclass.h#endif X myx(1); Y myy; Z myz;myx.i的初始值:myx.Geti()执行函数g(x)后,myx.i的值: myy.g(myx);执行函数f(x)后,myx.i的值: my
14、z.f(myx);执行函数h(x)后,myx.i的值: h(myx);友元函数测试2:class car; /前向引用声明class boat /定义一个类boat friend int totalweight(car &c,boat &b); boat(int w) weight=w; int weight;class car /定义一个类car car(int w) weight=w; int weight;/boat和car的友元函数totalweight的实现,计算二者的重量和int totalweight(car &b) return c.weight+b.weight; car C(1000); boat B(1234);The totalweight of the car and the boat is:totalweight(C,B)四、实验结果友元函数测试1: -(5)第六章实验 某同学 学 号:1、掌握数组的基本使用方法。2、练习通过动态内存分配实现动态数组,并体会指针在其中的作用。使用对象数组的方法改造“employee”函数的对象。代码如下:/employee.h/employee.cpp/5_11.cpp请输入下一位雇员的月薪
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1