定义类X、Y、Z,函数 h(X*),满足﹔类X有私有成员i,Y的成员函数g(X*)是X的友元函数,实现对X的成员i加1;类Z是类X的友元类,其成员函数f(X*)实现对X的成员 i加5;函数h(X* )是X的友元函数,实现对X的成员 i 加10。在一个文件中定义和实现类,在另一个文件中实现main()函数
实现:
定义和实现类的头文件命名为class.h
代码如下
#ifndef CLASS
class X;
class Y
{
public:
void g(X*);
};
class X
{
private:
int i;
public:
X(){i=0;}
friend void h(X* x){x->i+=10;}
friend void Y::g(X*);
friend class Z;
int show(){return i;};
};
void Y::g(X* x){x->i++;}
class Z
{
public:
void f(X* x){x->i+=5;}
};
#endif
主函数代码如下:
#include<iostream>
#include"class.h"
using namespace std;
int main(){
X x;
cout<<x.show()<<endl;
h(&x);
cout<<x.show()<<endl;
Z z;
z.f(&x);
cout<<x.show()<<endl;
Y y;
y.g(&x);
cout<<x.show()<<endl;
return 0;
}
运行结果如下