| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 824 人关注过本帖
标题:[求助]友元函数的应用
只看楼主 加入收藏
szd1105
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-11-25
收藏
 问题点数:0 回复次数:10 
[求助]友元函数的应用
#include <iostream.h>
#include <math.h>

class point
{
public:
point (double xx, double yy) {x = xx ; y = yy; }
void Getxy () ; \\这里的G一定要大写么
friend double distance (point &a, point &b) ;
private:
double x , y ;
};

void point : : Getxy()
{
cout <<" ( "<< x << " , " << y << " ) " ;
}

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()
{
point pl ( 3.0 , 4.0 ) , p2 (6.0 , 8.0) ;
p1. Getxy () ;
p2 .Getxy();
double d = distance (p1 ,p2 );
cout << "两点之间的距离是:" << d;
return 0 ;
}
请问上段代码的调用顺序是什么
搜索更多相关主题的帖子: 函数 应用 
2006-12-03 11:09
forever043
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-15
收藏
得分:0 
Getxy是自己起的函数名, 随便什么都行.

调用顺序:
point构造函数(for p1)-->point构造函数(for p2)
-->point::Getxy()(for p1)-->point::Getxy()(for p2)
-->distance()-->结束

学操作系统真的好郁闷啊.........
2006-12-03 11:38
szd1105
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-11-25
收藏
得分:0 
不好意思我是刚开始学你写的东西我还是不太懂
还有那个(a.x - b.x)中的点做什么意义

如《 p1. Getxy ()》这句代码是不是表示把Getxy的值赋予P1
2006-12-03 12:26
codeless
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-12-2
收藏
得分:0 
以下是引用szd1105在2006-12-3 11:09:49的发言:
class point
{
public:
point (double xx, double yy) {x = xx ; y = yy; }
void Getxy () ; \\这里的G一定要大写么
friend double distance (point &a, point &b) ;
private:
double x , y ;
};


对上面这段程序有点疑问

为什么友元出现在公用的后面?

达人指点

[此贴子已经被作者于2006-12-3 14:22:14编辑过]

2006-12-03 13:56
codeless
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-12-2
收藏
得分:0 
好象程序也运行不了 。。。
2006-12-03 14:28
forever043
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-15
收藏
得分:0 
以下是引用szd1105在2006-12-3 12:26:22的发言:
不好意思我是刚开始学你写的东西我还是不太懂
还有那个(a.x - b.x)中的点做什么意义

如《 p1. Getxy ()》这句代码是不是表示把Getxy的值赋予P1

先看看C++类中构造函数的析构函数方面的资料吧。

a.x代表取对象a中的x这个成员变量, a.x-b.x代表用a中的x减去b中的x

p1.Getxy()代表调用p1的成员函数Getxy()


还有一点, 注释是"//" 而不是你写的 "\\"

[此贴子已经被作者于2006-12-3 17:07:03编辑过]


学操作系统真的好郁闷啊.........
2006-12-03 17:03
forever043
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-15
收藏
得分:0 
以下是引用codeless在2006-12-3 13:56:42的发言:


对上面这段程序有点疑问

为什么友元出现在公用的后面?

达人指点



友元放在类定义中的任何地方都可以, 放在那是个凑巧吧


学操作系统真的好郁闷啊.........
2006-12-03 17:05
forever043
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-15
收藏
得分:0 
以下是引用codeless在2006-12-3 14:28:06的发言:
好象程序也运行不了 。。。

int main()
{
point p1 ( 3.0 , 4.0 ) , p2 (6.0 , 8.0) ;
//...
}

这个地方改一下, 程序里面还有些不必要的空格,去了就可以了


学操作系统真的好郁闷啊.........
2006-12-03 17:08
szd1105
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-11-25
收藏
得分:0 
那么这段代码的运行结果是什么
我想了一个不知道是不是
2006-12-04 10:53
hnzzc
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2006-4-26
收藏
得分:0 

结果是
( 3 , 4 ) ( 6 , 8 ) 两点之间的距离是:5Press any key to continue

2006-12-05 23:22
快速回复:[求助]友元函数的应用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013045 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved