friend的用法

liming2606 2006-10-26 11:42:38
请问frien如何用
...全文
1978 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gm_zhang 2006-10-28
  • 打赏
  • 举报
回复
最好不用friend
因为c++本来就是封装的
用friend破坏了c++封装性
lin_style 2006-10-27
  • 打赏
  • 举报
回复
mark
eplanet 2006-10-27
  • 打赏
  • 举报
回复
友元一般用来做一些特殊用途

例如,一个类中,有一些私有方法和属性.
但需要对另一个类开放权限(一般来说,这样的问题可以通过设计来解决),这个时候,利用友元就可以了.

直接在相关的地方写上

friend class nnn就可以了.其他的友元函数等和这个差不多.
友元函数多用来完成运算符重载.
Smile_Tiger 2006-10-27
  • 打赏
  • 举报
回复
那叫 “黑客员”
hziee_ 2006-10-27
  • 打赏
  • 举报
回复
友员就是留一个后们,
需要的时候可以进去干"坏事"
lann64 2006-10-27
  • 打赏
  • 举报
回复
顶一下pass86(l.jay) ,可以声明其他类的成员函数为友元。
pass86 2006-10-27
  • 打赏
  • 举报
回复
friend友元3种
1)友元函数
2)友元类
3)友元成员函数
weijiangshanwww 2006-10-26
  • 打赏
  • 举报
回复
转贴:
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。

  友元函数

  友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样。下面举一例子说明友元函数的应用。

  #include
  #include

  class Point
  {
  public:
    Point(double xx, double yy) { x=xx; y=yy; }
    void Getxy();
    friend double Distance(Point &a, Point &b);
  private:
    double x, y;
  };

  void Point::Getxy()
  {
  cout<<"("<
  }

  double Distance(Point &a, Point &b)
  {
  double dx = a.x - b.x;
  double dy = a.y - b.y;
  return sqrt(dx*dx+dy*dy);
  }

  void main()
  {
  Point p1(3.0, 4.0), p2(6.0, 8.0);
  p1.Getxy();
  p2.Getxy();
  double d = Distance(p1, p2);
  cout<<"Distance is"<
  }

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

  友元类

  友元除了前面讲过的函数以外,友元还可以是类,即一个类可以作另一个类的友元。当一个类作为另一个类的友元时,这就意味着这个类的所有成员函数都是另一个类的友元函数。

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧