//例:使用成员函数、友元函数和一般函数的区别#include(2)模仿上面的示例,完成求点类中距离的任务。你需要实现求距离函数的三种版本:分别利用成员函数、友元函数和一般函数求两点间距离的函数,并设计main()函数完成测试。using namespace std;class Time{public: Time(int h,int m,int s):hour(h),minute(m),sec(s) {} void display1(); //display1是成员函数 friend void display2(Time &); //display2是友元函数 int getHour(){return hour;} int getMinute(){return minute;} int getSec(){return sec;}private: int hour; int minute; int sec;};void Time::display1() //成员函数display1的实现,dispaly1前加Time::{ //以hour形式直接访问私有数据成员,实质是this->hour形式 cout< <<":"< <<":"< <
提示:此项目和例子的区别在于“距离是一个点和另外一个点的距离”,不同版本在参数上有体现。三个版本建议分开测试,也可以如示例,放在一个程序中完成。
成员函数:
/** Copyright (c) 2015,烟台大学计算机学院* All right reserved.* 作者:邵帅* 文件:Demo.cpp* 完成时间:2015年04月16日* 版本号:v1.0*/#include#include using namespace std;class CPoint{private: double x; // 横坐标 double y; // 纵坐标public: CPoint(double xx=0,double yy=0):x(xx),y(yy) {} double Distance(CPoint p); void input(); void output();};double CPoint::Distance(CPoint p){ double s; s=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)); return s;}void CPoint::input(){ char ch; cout<<"请输入坐标(x,y):"; cin>>x>>ch>>y;}void CPoint::output(){ cout<<"("< <<", "< <<")"<
友元函数
/** Copyright (c) 2015,烟台大学计算机学院* All right reserved.* 作者:邵帅* 文件:Demo.cpp* 完成时间:2015年04月16日* 版本号:v1.0*/#include#include using namespace std;class CPoint{private: double x; // 横坐标 double y; // 纵坐标public: CPoint(double xx=0,double yy=0):x(xx),y(yy) {} friend double Distance(CPoint &,CPoint &); void input(); void output();};double Distance(CPoint &p1,CPoint &p2){ double s; s=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)); return s;}void CPoint::input(){ char ch; cout<<"请输入坐标(x,y):"; cin>>x>>ch>>y;}void CPoint::output(){ cout<<"("< <<", "< <<")"<
一般函数
/** Copyright (c) 2015,烟台大学计算机学院* All right reserved.* 作者:邵帅* 文件:Demo.cpp* 完成时间:2015年04月16日* 版本号:v1.0*/#include#include using namespace std;class CPoint{private: double x; // 横坐标 double y; // 纵坐标public: CPoint(double xx=0,double yy=0):x(xx),y(yy) {} void input(); void output(); double getx() { return x; }; double gety() { return y; };};double Distance(CPoint &,CPoint &);double Distance(CPoint &p1,CPoint &p2){ double s; s=sqrt((p1.getx()-p2.getx())*(p1.getx()-p2.getx())+(p1.gety()-p2.gety())*(p1.gety()-p2.gety())); return s;}void CPoint::input(){ char ch; cout<<"请输入坐标(x,y):"; cin>>x>>ch>>y;}void CPoint::output(){ cout<<"("< <<", "< <<")"<
@ Mayuko