友元的关键字 friend
友元的三种实现
- 全局函数做友元
- 类做友元
- 成员函数做友元
4.4.1全局函数做友元
class Building
{
friend void goodgay(Building * building);
public:
Buildind()
{
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
public:
string m_SittingRoom ;
private:
string m_BedRoom;
}
//全局函数
void goodgay(Building * building)
{
//只能访问共有属性
cout << "全局函数访问:" << building->m_SittingRoom <<endl;
//如果要想访问是有属性,需要把函数放到类中声明为友元函数
cout << "全局函数访问:" << building->m_BedRoom<<endl;
}
4.4.2 类做友元
class Building;
class GoodGay
{
public:
void visit(); //参观函数,访问Buildding中的属性
Buildind * building;
};
class Building
{
friend void goodgay(Building * building);
public:
Buildind()
{
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
public:
string m_SittingRoom ;
private:
string m_BedRoom;
}