#include <iostream>
#include <cstring>
using namespace std;
class boy;//向前引用
class girl{//声明类1
private:
char name[25];
int age;
public:
void init(char N[],int A);//声明成员函数
friend void prdata(const girl plg,const boy plb);//友元函数
};
void girl::init(char N[],int A)//实现成员函数
{
strcpy(name,N);
age = A;
}
class boy{//声明类2
private:
char name[25];
int age;
public:
void init(char N[],int A);//成员函数
friend void prdata(const girl plg,const boy plb);//两个类调用同一个友元函数
};
void boy::init(char N[],int A)//实现成员函数
{
strcpy(name,N);
age = A;
}
//友元函数就是一个普通的函数,只是在类内部被声明为友元
//本友元函数被两个类同时声明为友元
//友元函数内部的成员变量可以访问类的私有成员
//一般的类成员变量,只能通过调用成员函数访问私有成员,不能直接访问私有成员
void prdata(const girl plg,const boy plb)
{
cout<<"女生 "<<plg.name<<','<<plg.age<<"岁;"<<endl;
cout<<"男生 "<<plb.name<<','<<plb.age<<"岁."<<endl;
}
int main()
{
girl G1;
boy B1;
G1.init("stacy",12);
B1.init("jim",11);
prdata(G1,B1);
return 0;
}