友元有三种
1.友元(全局)函数
2.友元类
3.友元成员函数
定义一个家类
友元全局函数
// 家
class Building {
// 让全局函数visit作为本类Building的好朋友,就可以访问私有成员。
friend void visit(Building& building);
public:
string m_SittingRoom; // 客厅
Building() {
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
private:
string m_BedRoom; // 卧室
};
//此函数为友元全局函数
void visit(Building& building) {
cout << "正在访问:" << building.m_SittingRoom << endl;
//使用friend void visit(Building& building);声明后
//可访问类的私有成员变量
cout << "正在访问:" << building.m_BedRoom << endl;
}
友元全局函数解决了全局函数在类外不能访问类的私有成员变量的问题。只需在类内声明该函数并加上friend关键字即可