一看到friend这个词,首先让人想到如果A是B的friend,那么B也是A的friend.
可实际不是如此。郑莉等<C++程序设计教程>(机械工业出版社) P94,关于友元类:
1.友元关系不具交换性。即友元具单向性
2.友元关系不具传递性。即若A是B的友元,B是C的友元,并不表示A是C的友元。
例如class A
{
...
};
class B
{
...
friend class A;
...
}
以上代码只是说明了 class A的成员函数可以访class B的数据成员。反过来不是。美国人真奇怪: 你是我的朋友,我反倒不一定是你的朋友。朋友只是用来"单方面利用"的么?
建议C++标准委员会 干脆以后将friend改为authorize(授权),呵呵。以此不要玷污"friend"一词。请大家谈谈关于友元(friend)的理解。谢谢。

解决方案 »

  1.   

    A认为B是friend表明的是A信任B,但反过来B不一定信任A呀,:)
      

  2.   

    A:B是我的朋友,我的所有(私有变量)他能访问
    B:A可不一定是我的朋友哦...
      

  3.   

    记得很久以前也是在这儿看到一个贴子,比喻做的很经典,依希记得是这样说的:
    A有一辆宝马车,A可以宣布:B是我的朋友,他可以使用我的宝马车;
    但B不能这样说:A是我的朋友,我可以使用他的宝马车
      

  4.   

    ber() 给出的例子说明的是:
    如果要允许B访问A的私有成员,那么应该应该让A来声明B是friend,B自己声明是没有用的
      

  5.   

    "如果要允许B访问A的私有成员,那么应该应该让A来声明B是friend,B自己声明是没有用的"说得好!
      

  6.   

    今天算是我醉了,讲个荤笑话给大家听:首先,
    class A是嫖客,
    class B是妓女。
    B说,我是A的friend,这意味着A可以访问我B的"私有成员"----为了声明这一点,B在自己身上写下了"friend class A"字样。------但是A却拒绝说"我是B的friend"!(why?)以上笑话版权没有,翻版不究。纯属为加强学习印象而编的笑话,希望版主不要删贴。