友元函数
使用友元函数可以让函数访问类中的私有变量。
友元类的函数同样可以访问类中的私有变量。
注意:友元关系不可以被继承和传递。
#include<bits/stdc++.h>
using namespace std;
class Human //定义一个主类
{
public:
//构造函数
Human(int age,bool gender): age_(age),gender_(gender){}
//功能函数
void walk()
{
cout << name_<<" is walking. .."<< endl;
}
void say(string content)
{
cout<<name_<<"says"<<content<<endl;
}
void set_name(string name)
{
name_=name;
}
string get_name()
{
return name_;
}
friend void marry(Human a,Human b); //作为友元函数
friend class MinZhengJu; //作为友元类
//私有变量
private:
string name_;
//成员变量
protected:
int age_;
bool gender_;
};
class MinZhengJu{
public:
void marry(Human a,Human b)
{
cout<<a.name_<<" and "<<b.name_<<" get married."<<endl;
}
};
void marry(Human a,Human b)
{
cout<<a.name_<<" and "<<b.name_<<" get married."<<endl;
}
int main()
{
Human a(25,0);
Human b(22,1);
a.set_name("张三");
b.set_name("罗翔");
marry(a,b); //调用友元函数
MinZhengJu agency; //创造一个友元类
agency.marry(a,b); //调用友元类的函数
return 0;
}