友元
在程序中,有些私有属性,也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。
友元的目的就是让一个函数或者类 访问另一个类中私有成员
关键字:friend
友元的三种实现:
- 全局函数做友元
- 类做友元
- 成员函数做友元
class House
{
//告诉编译器visitHouse全局函数,是House的friend,可以访问私有成员
friend void visitHouse(House* house);
//告诉编译器class Host是House的好朋友,可以访问本类的成员
//friend class Host;
//告诉编译器,class Host中的visit函数是本类的friend可以访问本类的私有成员
friend void Host::visit();
private:
string BedRoom;
public:
string settingRoom;
House();
};
House::House()
{
this->settingRoom = "客厅";
this->BedRoom = "卧室";
}
class Host
{
public:
Host();
void visit();//只让visit函数作为House的好朋友,可以发访问House中私有内容
private:
House* house;
};
Host::Host()
{
house = new House;
}
void Host::visit()
{
cout << "主人正在访问" << house->settingRoom << endl;
//cout << "主人正在访问" << house->BedRoom << endl;
}
void visitHouse(House* house)
{
cout << "朋友正在访问_______" << house->settingRoom << endl;
cout << "朋友正在访问_______" << house->BedRoom << endl;
}
void test02()
{
Host h1;
h1.visit();
}