C++ - Friend友元能继承吗

友元不能被继承:即,基类的友元未必是子类的友元;某类型的友元的子类未必是此类型的友元。

详细的,可以看以下两节:

What does it mean that "friendship isn't inherited, transitive, or reciprocal"?

Just because I grant you friendship access to me doesn't automaticallygrant your kids access to me, doesn't automatically grant your friendsaccess to me, and doesn't automatically grant me access to you.

  • I don't necessarily trust the kids of my friends. The privileges offriendship aren't inherited. Derived classes of a friend aren't necessarilyfriends. If class Fred declares that class Base is a friend,classes derived from Base don't have any automatic special access rights toFred objects.
  • I don't necessarily trust the friends of my friends. The privilegesof friendship aren't transitive. A friend of a friend isn't necessarily afriend. If class Fred declares class Wilma as a friend, and classWilma declares class Betty as a friend, class Betty doesn'tnecessarily have any special access rights to Fred objects.
  • You don't necessarily trust me simply because I declare you myfriend. The privileges of friendship aren't reciprocal. If class Freddeclares that class Wilma is a friend, Wilma objects have special accessto Fred objects but Fred objects do not automatically have special accessto Wilma objects.
(http://www.parashift.com/c++-faq-lite/friends.html)

What is inherited from the base class?

In principle, a derived class inherits every member of a base class except:

  • its constructor and its destructor
  • its operator=() members
  • its friends
(http://www.cplusplus.com/doc/tutorial/inheritance/)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值