友元类的理解

借用一下https://www.cnblogs.com/zhuguanhao/p/6286145.html的代码

#include <iostream>

using namespace std;

class A
{
public:
    friend class C;                         //这是友元类的声明
private:
    int data;
};

class C             //友元类定义,为了访问类A中的成员
{
public:
    void set_show(int x, A &a) { a.data = x; cout<<a.data<<endl;}
};

int main(void)
{
    class A a;
    class C c;

    c.set_show(1, a);

    return 0;
}

  本来A的对象 a是无法直接访问data变量(或者是A的私有成员函数)的,但是在友元类C里面,就能直接访问了,这是一种权限的改变

原文地址:https://www.cnblogs.com/tangmiao/p/10670955.html