-
1./*(文件注释头部开始) 2.*程序的版权和版本声明部分 3.*Copyright (c) 2011,烟台大学计算机学院学生 4.*All rights reserved. 5.*文件名称:平面坐标点类 6.*作 者:114-4刘程程 7.*完成日期:2012年04月03号 8.*版本号:vc.3 9.* 对任务及求解方法的描述部分 10.* 输入描术:输入坐标点 11.* 问题描述:你需要完成的任务是,利用成员函数、友元函数和一般函数,实现三个版本的求两点间距离的函数, 12.* 并设计main()函数完成测试。此任务和上例的区别在于“距离是一个点和另外一个点的距离”,参数个数上有体现。 13.* 程序输出:输出两点之间距离、到原点距离、关于坐标轴和原点的对称点等 14.* 程序头部的注释结束 15.*/ #include <iostream> #include <Cmath> using namespace std; #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(const Cpoint &);//成员函数 friend double distance2( Cpoint &, Cpoint &);//友元函数 double getX(){return x;} double gety(){return y;} }; double distance3(Cpoint &,Cpoint &); //一般函数声明 double Cpoint::distance1(const Cpoint &p)//成员函数的实现 { double dx = (x - p.x), dy = (y - p.y); return sqrt(dx*dx + dy*dy); } double distance2(Cpoint &p1,Cpoint &p2) { double dx = (p1.x - p2.x),dy = (p1.y-p2.y); return sqrt(dx*dx +dy*dy); } double distance3(Cpoint &p1,Cpoint &p2) { double dx = (p1.getX() - p2.getX()),dy = (p1.gety() - p2.gety()); return sqrt(dx*dx + dy*dy); } int main() { Cpoint p1(10,13),p2(-5,6); cout << "1. "<<p1.distance1(p2)<<endl; cout << "2. "<<distance2(p1,p2)<<endl; cout << "3. "<<distance3(p1,p2)<<endl; system("pause"); return 0; }
感悟:通过这个程序,对一般函数,类成员函数,以及友元函数有了更加清晰的认识,一开始对一般函数的实现不太会弄,因为一般函数不能引用类的私有数据成员,后来知道了,通过在public中定义一个 double getx()和double gety()就可以引用了。。。。