需要友元的原因及使用
2013-09-18 09:52
232 查看
需要友元的原因及使用
有时候,普通函数需要直接访问一个类的保护或私有数据成员。如果没有友元机制,则只能将类的数据成员声明为公共的,从而,任何函数都可以无约束的访问它。普通函数需要直接访问类的保护或私有数据成员的原因主要是为提高效率。
在类里声明一个普通函数,标上关键字friend,就成了该类的友元,可以访问该类的一切成员。
需要友元的另一个原因是为了方便重载操作符的使用。
友元函数不是成员函数,它是类的朋友,因而能够访问类的全部成员。在类的内部,只能声明它的函数原型,加上friend关键字。友元声明的位置可以在类的任何部位,既可在public区,也可在protected区,意义完全一样。友元函数定义则在类的外部,一般与类的成员函数定义放在一起。因为类重用时,一般友元是一起提供的。
一个类的成员函数可以使另一个类的友元。
整个类可以是另一个类的友元,该友元成为友类。友类的每个成员函数都可访问另一个类中的保护或私有数据成员。
友元的作用主要是为了提高效率和方便编程。但随着硬件性能的提高,友元的这点作用是微不足道的。相反,友元破坏了类的整体操作性,也破坏了类的封装,所以在使用时,要权衡利弊。
相关文章推荐
- 需要友元的原因及使用
- 需要友元的原因及使用
- 需要友元的原因及使用
- 需要友元的原因及使用
- 使用赛孚耐数据保护解决方案在整个生命周期内确保信息安全白皮书连载一:需要新的数据保护方式原因
- ISE使用IP核生成的SRAM,读写需要时钟的原因
- 十个我们需要使用Linux的原因
- 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网
- 内部类访问的外部变量需要使用final修饰解释原因
- 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网
- boost asio 需要使用智能指针而不能使用普通指针的原因
- 【C++ primer在练习中体悟】 C++中二元运算符重载需要使用friend的原因
- C++ - 模板函数需要类型转换时使用友元(friend)模板函数
- ng-option指令使用记录,设置默认值需要注意
- 使用HttpURLConnection需要注意的地方
- Android中使用httpclient访问服务器,需要session功能
- VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因
- “在使用Samba进行建立Wisamba无法访问,你可能没有权限使用网络”的一种问题原因及解决
- 安装完eclipse,dbwear后,需要在他们解压文件.ini下加上你liux的jdk的安装路径,才能正常使用
- VS2008使用Access数据库,不能更新数据库中数据的原因