实验三:类和对象(二).doc_第1页
实验三:类和对象(二).doc_第2页
实验三:类和对象(二).doc_第3页
实验三:类和对象(二).doc_第4页
实验三:类和对象(二).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

福建农林大学实验报告实验3 类和对象(二)一、实验目的和要求(1) 掌握静态成员的基本使用方法。(2) 掌握友元的使用方法,进一步理解其概念和作用。二、实验内容和原理1、分析并调试程序,然后完成以下问题:(1)指出默认参数的构造函数.(2)指出其余所有的构造函数,它们在本程序中分别起什么作用?(3)指出友元函数。将友元函数放到私有部分,观察结果是否有变化。(4)写出输出结果,并分析输出结果。2、声明Circle和Rectangle两个类,Circle有半径radius属性,Rectangle有length属性和width属性,定义二者的一个友元函数compare( )用于比较圆形和矩形面积的大小。3、定义一个Salesman类(销售员类),在该类定义中包括一个数据成员amount(销售量),两个静态数据成员total(总销售量)和count(销售员人数);成员函数amounttotalcount(int amount, float price)用于设置销售量和产品单价、求总销售量和累计销售员人数;静态成员函数sum()用于返回总销售额(销售额=销售量*单价);静态成员函数average用于求销售额平均值。在主函数main()中,输入某公司每位销售员的销售量和销售的产品单价,并调用上述函数求全部销售员的总销售量和平均值。三、实验环境1. 硬件:PC机;2. 软件:Windows操作系统、Visual C+ 6.0四、算法描述及实验步骤1(1)默认构造函数是My(My &m)x=m.x,y=m.y; (2)My(double i=0)x=y=i; My(double i,double j)x=i;y=j; friend double dist(My &a,My &b); double x,y;double dx=a.x-b.x; double dy=a.y-b.y; 定义函数I,X,Y 然后将I赋值给X,Y; 然后后面的是一个友元函数调用下面的私有函数;(3)友元函数是friend double dist(My &a,My &b);#include#includeclass Mypublic: My(double i=0)x=y=i; My(double i,double j)x=i;y=j; My(My &m)x=m.x,y=m.y; private: double x,y; friend double dist(My &a,My &b);double dist(My &a,My &b) double dx=a.x-b.x; double dy=a.y-b.y; return sqrt(dx*dx+dy*dy);int main() My a,b(25),c(3,11); My d(c);coutThe distance1:dist(a,c)endl; coutThe distance2:dist(b,c)endl;coutThe distance3:dist(c,d)endl;coutThe distance4:dist(a,b)endl;return 0;将友元函数放到私有部分结果是没有变化。(4)The distance1 求的是A点(0,0)到C(3,11)的距离 The distance2求的是B点(25,25)到C(3,11)的距离 The distance3求的是C点(3,11)到D(3,11)的距离 The distance1求的是A点(0,0)到B(25,25)的距离2.#includeconst double PI=3.14;class Circle;class Rectpublic: Rect(double len=0,double wid=0) length=len; width=wid; double area() return length*width; friend void area_compare(Rect a,Circle b);private: double length; double width;class Circlepublic:Circle(double r)R=r;double area();friend void are_compare(Rect a,Circle b);private:double R;double Circle:area()return PI*R*R;void area_compare(Rect a,Circle b) if(a.area()b.area() coutarea:AB; else if(a.area()=b.area() coutarea:A=B; else coutB;void main() Rect A(3.4,5); Circle B(1); area_compare(A,B);3.#includeusing namespace std;class Salesman public: void amounttotalcount(int amount,float price); static float sum(); static float average();private:int amount;static float total;static float count;static float totalprice;float Salesman : total=0;float Salesman : count=0;float Salesman : totalprice=0;void Salesman : amounttotalcount(int a,float b) amount=a; totalprice=totalprice+a*b; total=total+amount; count=count+1;float Salesman:sum()return totalprice;float Salesman:average()return totalprice/count;int main()Salesman sale; float b;int a,i,n;cout输入公司销售人员总数:n;for(i=1;i=n;i+)cout输入第i个销售人员数量a;cout输入第i个销售人员销售价格b;sale.amounttotalcount(a,b);cout输出全部销售量:Salesman:sum()endl; cout输出全部销售人员销售平均值:Salesman:average

温馨提示

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

评论

0/150

提交评论