C++:友元
#include <iostream>
#include <string>
using namespace std;
class Building;
class GoodGay
{
public:
GoodGay();
void visit01();
private:
Building* building;
};
class Building
{
// 1、利用friend关键字让全局函数作为Building类的友元,可以访问本类私有属性。
friend void GoodGayFunc(Building* building);
// 2、利用friend关键字让类作为Building类的友元类,可以访问本类的私有属性。
//friend class NewGay;
// 3、利用friend关键字让类的成员函数作为Building类的友元,可以访问本类的私有属性。
friend void GoodGay::visit01();
public:
Building()
{
SettingRoom = "客厅";
BeddingRoom = "卧室";
}
public:
string SettingRoom;
private:
string BeddingRoom;
};
void GoodGayFunc(Building* building)
{
cout<<"好基友正在访问"<<building->SettingRoom<<endl;
// 访问私有属性
cout<<"好基友正在访问"<<building->BeddingRoom<<endl;
}
GoodGay::GoodGay()
{
this->building = new Building;
}
void GoodGay::visit01()
{
cout<<"好基友正在访问:"<<this->building->SettingRoom<<endl;
//cout<<"好基友正在访问:"<<this->building->BeddingRoom<<endl;
}
//1、全局函数作为友元
void test01()
{
Building* b = new Building;
GoodGayFunc(b);
}
// 2、类作为友元类
void test02()
{
GoodGay g;
g.visit01();
}
// 3、类的成员函数作为友元
void test03()
{
GoodGay g;
g.visit01();
}
int main()
{
test01();
test02();
test03();
return 0;
}