友元的作用在让另一个函数或类,可以访问私有成员,有三种形式
- 全局函数作友元
- 类作友元
- 成员函数作友元
全局函数作友元
#include <iostream>
#include <string>
using namespace std;
class Room{
friend void toSleep();//声明全局函数toSleep可以返回Room私有函数及变量
//私有函数
private:void bedRoom(){
cout << "in bedroom" << endl;
}
};
void toSleep(){
Room room;
room.bedRoom();//可以正常调用
}
int main()
{
toSleep();
return 0;
}
类作友元
#include <iostream>
#include <string>
using namespace std;
class Room{
friend class People;//声明People为友元
//私有函数
private:void bedRoom(){
cout << "in bedroom" << endl;
}
};
class People{
public:void sleep(){
Room r;
r.bedRoom();
}
};
类成员函数作友元
#include <iostream>
#include <string>
using namespace std;
class People;
class Room;
class People{
public:void sleep();
};
class Room{
friend void People::sleep();
void bedRoom();
};
void People::sleep(){
Room room;
room.bedRoom();
}
void Room::bedRoom(){
cout << "in bedroom" << endl;
}
int main()
{
People p;
p.sleep();
return 0;
}