C++ 友元

 友元 == 有缘。

没错~有缘之后可以做很多事情,比如去你家蹭吃蹭喝..

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。但是反过来就不成立了。

原文地址:https://www.cnblogs.com/CAION/p/2839424.html