友元 == 有缘。
没错~有缘之后可以做很多事情,比如去你家蹭吃蹭喝..
C++中 类的友元(包括友元函数,友元类),可以访问该类的私有和继承变量。虽然破坏了封装性,却也为编程提供了便利。是一种共享数据的方式之一(除此之外还有,静态数据,全局变量)。
下面描述友元应用的场景:现在有两个类A,B。B需要获取A中的private数据,有两种方式,通过接口获取数据,或者B(或其成员函数)成为A的友元直接访问数据。假设,调用数据非常频繁,这时使用友元就可以提高效率。但是,当A中的数据结构发生改变时,B的函数也要发生相应改变。接口的好处~封装的威力XD
友元函数:
在要成为其友元的类中声明该函数,并在函数前增加friend关键字即可。
#include <iostream> using namespace std; class a { public: friend void output(a& test); a(int i){count = i;}; private: int count; }; void output(a& test) { cout<<test.count<<endl;//private也照样访问 } int main() { a test(1); output(test); getchar(); return 0; }
友元类:
与友元函数一样,在组合类的时候,在类前加上friend关键词。这样,整个类的成员函数都是他的友元函数 - -,一大家子····
此处代码省略。
最后
友元关系不是双向的,B是A的友元,表示B能访问A的private和protect。但是反过来就不成立了。