#include<iostream>
#include<cmath>
using namespace std;
class Point
{
public:
Point(double xx,double yy)
{
x=xx;
y=yy;
};
void Getxy();
friend double Distance(Point&a,Point&b);
private:
doublex,y;
};
void Point::Getxy()
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
double Distance(Point&a,Point&b)
{
double dx=a.x-b.x;
double dy=a.y-b.y;
return sqrt(dx*dx+dy*dy);
}
int main(void)
{
Point p1(3.0,4.0),p2(6.0,8.0);
p1.Getxy();
p2.Getxy();
double d=Distance(p1,p2);
cout<<"Distanceis"<<d<<endl;
return 0;
}

说明:在该程序中的Point类中说明了一个友元函数Distance(),它在说明时前边加friend关键字,标识它不是成员函数,而是友元函数。它的定义方法与普通函数定义一样,而不同于成员函数的定义,因为它不需要指出所属的类。但是,它可以引用类中的私有成员,函数体中a.x,b.x,a.y,b.y都是类的私有成员,它们是通过对象引用的。在调用友元函数时,也是同普通函数的调用一样,不要像成员函数那样调用。本例中,p1.Getxy()和p2.Getxy()这是成员函数的调用,要用对象来表示。而Distance(p1, p2)是友元函数的调用,它直接调用,不需要对象表示,它的参数是对象。(该程序的功能是已知两点坐标,求出两点的距离。)

最新文章

  1. iStylePDF c#集成开发示例
  2. CSS之过渡简单应用—日落西山
  3. js execCommand
  4. Irrlicht引擎I 配置
  5. ct任务添加与中控机批量后台操作
  6. SqlBulkCopy 简单运用
  7. 使用Newtonsoft.Json序列化和反序列化对象(源码)
  8. BNUOJ34973Liserious战队
  9. 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
  10. SSAS系列——【05】多维数据(编程体系结构)
  11. 解决android studiogradle 错误 找不到程序包 符号
  12. char对比varchar
  13. mfcc的特征提取python 代码实现和解析
  14. 一个具有缓存数据功能的HttpWebRequest工具类
  15. word绘图画布
  16. Jquery调用ajax参数说明
  17. 【转】Verilog HDL常用建模方式——《Verilog与数字ASIC设计基础》读书笔记(四)
  18. Redis学习八:Redis的事务
  19. nginx简单代理配置
  20. Extjs4常见的调试问题

热门文章

  1. IT人员----怎么把电脑窗口设置成淡绿色
  2. JavaScript引用类型之RegExp类型(正则表达式)
  3. 新浪云-PHP实现上传原图,缩略图
  4. NodeJS爬虫系统初探
  5. 非数值(Not a Number)NaN的解释
  6. Android Shape画圆,矩形
  7. 新手笔记-tftp与yum
  8. 使用百度语音识别REST API,做全平台语音识别
  9. shell 学习笔记1501-1800
  10. oracle解锁表