1. 友元概念
类的主要特点之一是数据隐藏,即类的私有成员无法在类的外部(作用域之外)访问。但是,有时候需要在类的外部访问类的私有成员,怎么办?
解决方法是使用友元函数,友元函数是一种特权函数,c++允许这个特权函数访问私有成员。
如果想要让全局函数或一个类的成员函数访问另一个类私有成员,只需要声明友元即可
2. 友元的语法
2.1 全局函数成为类的友元
class Building
{
//声明友元
friend void print_Building(Building &b);
public:
Building(string hall,string bedroom)
{
this->bedroom = bedroom;
this->hall = hall;
}
string hall;
private:
string bedroom;
};
void print_Building(Building &b)
{
cout << b.hall << " " << b.bedroom << endl;
}
2.2 类成为另一个类的友元,类的成员函数成为另一个类的友元
class Building;
class Goodgay
{
public:
Goodgay(string hall, string bedroom);
void visit();
Building *b;
};
class Building
{
//friend void print_Building(Building &b);
//friend class Goodgay; //一个类成为另一个类的友元
friend void Goodgay::visit();//类的成员函数成为另一类的友元
public:
Building(string hall, string bedroom)
{
this->bedroom = bedroom;
this->hall = hall;
}
string hall;
private:
string bedroom;
};
Goodgay::Goodgay(string hall, string bedroom)
{
b = new Building( hall, bedroom);
}