第七周任务二
来源:互联网 发布:如何查看淘宝消费记录 编辑:程序博客网 时间:2024/05/17 09:29
【任务2】阅读下面的程序,仔细阅读注释。然后模仿完成求点类中距离的任务。
//例:使用成员函数、友元函数和一般函数的区别
#include <iostream>using namespace std;class Time{public:Time(int h,int m,int s):hour(h),minute(m),sec(s){}void display1(); //成员函数声明friend void display2(Time &); //友元函数声明int getHour(){return hour;}int getMinute(){return minute;}int getSec(){return sec;} private:int hour;int minute;int sec;};void display3(Time &); //一般函数声明void Time::display1() //成员函数的实现,dispaly1前加Time::{//以hour形式直接访问私有数据成员,实质是this->hour形式cout<<hour<<":"<<minute<<":"<<sec<<endl;}void display2(Time &t) //友元函数的实现,dispaly2前不加Time::,并不是类的成员函数{//不是类的成员函数,却可以t.hour的形式直接访问私有数据成员——友元cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;}void display3(Time &t) //一般函数的实现,dispaly1前加Time::{//只能用公共接口t.getHour()形式访问私有数据成员cout<<t.getHour()<<":"<<t.getMinute()<<":"<<t.getSec()<<endl;}int main(){Time t1(10,13,56);t1.display1(); //成员函数这样调用display2(t1); //友员函数调用和一般函数无异display3(t1); //一般函数的调用system("pause");return 0;
需要完成的任务是,利用成员函数、友元函数和一般函数,实现三个版本的求两点间距离的函数,并设计main()函数完成测试。此任务和上例的区别在于“距离是一个点和另外一个点的距离”,参数个数上有体现。下面是点类的部分代码。
class CPoint {private: double x; // 横坐标 double y; // 纵坐标 public: CPoint(double xx=0,double yy=0):x(xx),y(yy){} ……//请继续写需要的代码
解答
#include<iostream>#include<Cmath>using namespace std;class CPoint {private:double x;double y;public:CPoint( double xx = 0, double yy = 0 ) : x(xx), y(yy){}double Distance1 ( CPoint & ) const; //成员函数声明friend double Distance2 ( const CPoint &, const CPoint & ); //友元函数声明double getX() { return x;}double getY() { return y;}};double Distance3 ( CPoint &, CPoint & ); //一般函数声明double CPoint::Distance1 ( CPoint &p ) const{double dx = p.x - x, dy = p.y - y;returnsqrt ( dx * dx + dy * dy) ; }double Distance2 ( const CPoint &X, const CPoint &Y ){double dx = X.x - Y.x, dy = X.y - Y.y;return sqrt ( dx * dx + dy * dy );}double Distance3 ( CPoint &d1, CPoint &d2 ){double dx = d1.getX() - d2.getX(), dy = d1.getY() - d2.getY();return sqrt ( dx * dx + dy * dy );}int main (){CPoint a1(2,4), a2(1,3);cout << "以成员函数输出" << a1.Distance1(a2) << endl;cout << "以友元函数输出" << Distance2(a1,a2) << endl;cout << "以一般函数输出" << Distance3(a1,a2) << endl;system ("pause");return 0;}
上级感言:希望老师在报告中多给点程序让我们看,还有希望上课时多讲点程序来学习要学的内容~
- 第七周 任务二
- 第七周任务二
- 第七周 任务二
- 第七周任务二
- 第七周任务二
- 第七周任务二
- 第七周任务二
- 第七周任务二
- 第七周任务二
- 第七周任务二
- 第七周任务二
- 第七周任务(二)
- 《第七周实验报告任务二》
- 第七周实验报告任务二
- 第七周任务二 友元函数
- 第七周实验报告 任务二
- 第七周上机任务项目二
- 任务二第七个
- jquery上传图片
- Sparklines
- 二叉树的递归实现理解
- 差不多先生传(胡适)
- Filter (3)【日志记录与异常捕捉】
- 第七周任务二
- Latex插入图片
- 求第K个最大的数
- spring quartz cron 表达式
- iconv、mb_convert_encoding字符编码的转换
- 利用Oracle VPD(虚拟专用数据库)实现类似EBS R12里的多OU屏蔽
- ubuntu11.10下linux内核主机编译
- Spring Quartz任务调度入门
- 做点笔记