声明的友元类的意思是友元类可以访问当前类的私有成员。
给你提供2中写法,一种是使用友元类:
class Boy
{
public:
Boy(string name,int age)
{
m_name=name;
m_age=age;
}
friend class Girl;
private:
string m_name;
int m_age=0;
};
class Girl
{
public:
Girl(string name,int age)
{
m_name=name;
m_age=age;
}
void VisitBoyAndGirl(Girl girl,Boy boy)
{
cout<<"boy name ="<<boy.m_name<<endl;
cout<<"boy age ="<<boy.m_age<<endl;
cout<<"girl name ="<<girl.m_name<<endl;
cout<<"girl age ="<<girl.m_age<<endl;
}
private:
string m_name;
int m_age=0;
};
int main()
{
Girl girl("xiaoli",20);
Boy boy("xiaoming",23);
girl.VisitBoyAndGirl(girl,boy);
}
第二种是友元函数:
class Girl; //事先声明girl是一个类
class Boy
{
public:
Boy(string name,int age)
{
m_name=name;
m_age=age;
}
friend void VisitBoyAndGirl(Girl girl,Boy boy);
private:
string m_name;
int m_age=0;
};
class Girl
{
public:
Girl(string name,int age)
{
m_name=name;
m_age=age;
}
friend void VisitBoyAndGirl(Girl girl,Boy boy)
{
cout<<"boy name ="<<boy.m_name<<endl;
cout<<"boy age ="<<boy.m_age<<endl;
cout<<"girl name ="<<girl.m_name<<endl;
cout<<"girl age ="<<girl.m_age<<endl;
}
private:
string m_name;
int m_age=0;
};
int main()
{
Girl girl("xiaoli",20);
Boy boy("xiaoming",23);
VisitBoyAndGirl(girl,boy);
}