// 友元
// 友元的类成员函数
#include <iostream>
#include <cstring>
#include <cstdlib>

using namespace std;

class B;

class C
{
public:
    // 在此函数内，要访问 B 类中的所有成员，将此函数在 B 类中声明友元
    // 先声明，不能实现
    void showB(B &b);
};

class B
{
    // 声明友元的成员函数
    friend void C::showB(B &b);

private:
    int x;

public:
    B(int x) : x(x) {}
    void show()
    {
        cout << "成员函数 x = " << x << endl;
    }
};

// 定义或实现友元的成员函数
void C::showB(B &b)
{
    cout << "友元的成员函数 b.x = " << b.x << endl;
}

int main()
{
    B b(100);
    b.show();
    C c;
    c.showB(b);
    return 0;
}
