类Z是类X的友元类,其成员函数f(X*)实现对X的成员i加5,函数h(X*)是X的友元函数,实现对X的成员i加10。在一个文件中定义和实现类,在另一个文件中实现main()函数。

//头文件 xyz.h
#ifndef XYZ_H_INCLUDED
#define XYZ_H_INCLUDED



#endif // XYZ_H_INCLUDED
#include <cstdio>
class X;
class Y
{
    public:
    void getx(X* x);
};

class X
{
    private:
        int i;
    public :
        void seti()
        {
            i=0;
        }
        friend void Y::getx(X* x);
        friend class Z;
        friend void hx(X *x);
        void show()
        {
            printf("%d\n",i);
        }
};
void Y::getx(X *x)
{
    x->i=x->i+1;
}
class Z
{
    public:
        void fx(X *x);
};
void Z::fx(X *x)
{
    x->i=x->i+5;
}
void hx(X *x)
{
    x->i=x->i+10;
}

//主程序
#include "xyz.h"

using namespace std;
int main()
{
    X a;
    a.seti();
    a.show();
    Y b;
    b.getx(&a);
    a.show();
    Z z;
    z.fx(&a);
    a.show();
    hx(&a);
    a.show();

    return 0;
}