MyC++之友元

  友元可以函数也可以是类,我更愿意把它当成一个访问权限的关系。它使得一些非类成员函数有权利对该类的私有成员或保护型成员进行访问,不过这个权限是别人赋予的。

 

友元包括友元函数和友元类,声明格式无非是:

1、  关键字(friend+返回类型+函数名+参数列表

2、  关键字(friend+类名

 

友元的使用还有些得注意的地方,比如说单向性,比如说类A为类B的友元类,那么A可以访问B中公有成员和私有成员,但返回来B却没有这样的权限。不管是不是公平,但事实却是如此。就好比我认为小强是我的朋友,我把我东西给小强用,但是不能因为我认为小强是我的朋友,我就可以随意乱用小强的东西。有点绕口吧、、、呵呵,所以声明友元得在被访问的类中而且必须是类的定义中声明。

 

当然,不论是友元函数还是友元类,它都不是类中的一部分,所以无所谓你在类中的哪个地方声明,包括public or private(当然,如果你是个“优美”的程序员你会把友元声明成组的放在类的定义之首或之尾)。自然也就不会有继承的性质,而且也不会具有传递性。

然后再来谈谈友元的优缺点:

 

通过使用友元,你可以提高程序的运行效率,减少了一些安全性检测所耗费的时间。我想更重要的是C++primer中所提到的“便于与其他不支持类概念的语言(如C语言、汇编语言等)进行混合编程,通过使用友元函数可以更自然地使用C++语言的I/O流库。”然而对于混合编程还没有深入去学习,也不好去谈论,但是个人觉得如果你只是为了去操作或使用类中的私有成员或保护型成员而去声明友元,有种捡了芝麻丢了西瓜的感觉,因为你完全可以在类中定义一些接口函数来操作类中的私有成员,而且通过接口函数来对类的实例进行访问是最好访问风格,这样不仅尊重了类的接口设计,而且对于类的封装性和可维护性起了更大的作用,你觉得呢?呵呵

 

                                   一心向学_____

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值