友元函数是一些不是类成员却能够访问类的所有成员的函数。。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。
举个简单的例子:一个聚会中,有一个舞台,大家都可以去跳舞,而包厢则进不去,VIP就可以了
这个例子不知道好理解不?
可以理解为中国特色的走后门。
友元函数可以访问私有成员. 可以理解为是private给他的特权
友元的使用主要是为了提高效率和方便编程。有时候,普通函数需要直接访问一个类的保护或私有数据成员,如果没有友元机制,则只能将类的数据成员声明为公共的,然后却导致任何函数都可以无约束的访问它了。在类里声明一个普通函数,标上friend,就变成了该类的友元,可以访问该类的一切成员
需要友元的另外一个原因是为了方便重载操作符的使用。
友元函数不是成员函数,它是类的朋友,因而可以访问类的全部成员。在类的内部只能声明它的函数原型,加上friend关键字。
友元函数是独立的,简单点就是类似类外部定义的函数了,提供友元功能是为了让函数可以访问类中私有变量
使用的话是按需来走的
还有中应用就是操作符的重载了~
如果你愿意读英文,可以看这篇介绍
http://www.parashift.com/c++-faq/friends.html
我个人的看法C++里面加上friend完全是C++的创始人为了讨好各种各样的用户而往C++里面加的奇奇怪怪的东西。
不能说friend没用,而是说friend这个东西精巧的普通人都用不好。
C++中友元函数不属于类,不是类的成员函数,它的存在提供了外部函数访问类对象私有成员的权限,换句话说,这个类的对象在友元函数内部可以表现私有的成员。
就像一种社会现象:“关系”,“走后门”
friend是在软件设计中 共享与封装矛盾产生的一个解决方案