闲扯 C++关键字 “friend”

1.从前有座山,山里有户人家,里面住着小扬和他的爸爸妈妈。家里小扬有个书包,爸妈有辆摩托车,客厅里有台电视,他们一家三口生活在这里。
这里我们简单的对号入座一下:
家class -> home
书包    -> backpack; 私有private
摩托车   -> motorbike; 私有private
电视     -> TV; 公有public

小杨 -> xiaoyang(); 公有public
爸爸   -> xiaoyangFather(); 公有public
妈妈   -> xiaoyangMother(); 公有public
2.有一天,邻居小明想去小扬家看电视,他经过小扬的同意,来到小扬家,打开了电视,看着《喜羊羊》乐的不行。

电视在home里是共有的,只要经过家里人同意,进入home就可以看。

代码里:
类中的public成员变量,可以通过该类的对象直接访问。
3.又过了几天上学的时候,小扬起的太早上学时忘记带书包,打电话给还没来到学校的小明,让他把书包带过来。

需求是小明需要帮小扬带书包,那么问题来了:
书包是小扬home的私人物品,只能通过小扬或着小扬的爸爸妈妈才能取出来。

代码里:
类中的private成员变量,只能通过该类的public成员方法进行访问。
小明来到小扬家,发现小扬的爸妈出去工作了不在家,屋里的大门还上着锁。

小明发愁了,这可怎么办呢?

代码里:
类中,没有相应的public成员方法可以对私有成员变量backpack进行调用。
于是小明回自己家里打电话给在学校的小扬,说:“家里没人,屋里大门上着锁,书包拿不出来”。
然后,小扬说:“你是我的friend,我把放钥匙的位置给你说下,你开下门,自己取书包就可以了”。

小明找到了钥匙,取了小扬的书包,带到了学校。事情告一段落。

代码里:
给方法xiaoming(),加了friend权限。作为友元函数的xiaoming(),
可以通过小扬home对象,对私有变量backpack进行调用。
4.又过了一段时间,小明的爸妈想去走亲戚,需要借一辆摩托车。小明就去找小扬说了借摩托的事,小扬征求了父母的意见同意了。

需求是小明爸妈需要借摩托车走亲戚
摩托车是小扬home的私人物品,小扬征求了父母的意见,同意借了。

代码里:
类home的private成员变量motorbike,只能通过该类的public成员方法
xiaoyang(), xiaoyangFather(), xiaoyangMother()进行访问。
当小明的爸妈,去骑摩托车的时候,小扬家里没人。小明的爸妈有些着急,再拖可能就走不成亲戚了。这让小明,有些生气,也确实是不方便。于是小明给小扬打电话说:“我爸妈去骑摩托车,你家里没人,这可咋办呐”。
小扬说:“你别着急,我给我爸妈打个电话问问”。最后小扬的爸妈出去有点事儿,一时也回不了家。
在征求爸妈同意的情况下,小扬给小明回电话说:“你是我的friend,那你们家就是我们家的friend,钥匙在靠着门的墙上,让你爸妈自己去取车吧!”

小明的爸妈,找到了钥匙,取了车,走了亲戚,开开心心的回来后,还了车。借车的事情告一段落。

代码里:
给小明家的home类,加了friend权限。作为友元类的成员方法xiaomingFather()和
xiaomingMother()可以对小扬home类的私有成员变量motorbike进行调用。


  • 根据C++代码中friend的使用情况,个人理解就是这么个情况。
  • 上述段落3.中,函数xiaoming(),小明通过小扬拿到friend的钥匙,开门取了背包,带到了学校。 友元函数()
  • 上述段落4.中,类home(小明家),通过小扬征求父母的同意,小明home拿到friend的钥匙,开门,取了摩托车,走了亲戚。 友元类()
注意: 除非知道自己在做什么,不要随便给friend权限,否则有可能对自己home的安全造成威胁,甚至可能会人财两空哦!
考虑到C++中关键字friend对代码封装的破坏性,使用的时候最好要谨慎一些。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值