
全局函数做友元代码:
#include<iostream>
 using namespace std;
 #include<string>
//建筑物类
 class Building
 {
     //告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容
     friend void goodGay(Building * building);
public:
    Building()
     {
         this->m_SittingRoom = "客厅";
         this->m_BedRoom = "卧室";
     }
 public:
     string m_SittingRoom; //客厅
private:
     string m_BedRoom; //卧室
 };
//全局函数
 void goodGay(Building * building)
 {
     cout << "好基友正在访问: " << building->m_SittingRoom << endl;
     cout << "好基友正在访问: " << building->m_BedRoom << endl;
 }
 void test01()
 {
     Building b;
     goodGay(&b);
 }
int main(){
test01();
    system("pause");
     return 0;
 }
类做友元代码:
#include<iostream>
 using namespace std;
 #include<string>
//类做友元
class Building;
 class goodGay
 {
 public:
    goodGay();
     void visit();//参观函数 访问Building中属性
private:
     Building *building;
 };
 class Building
 {
     //告诉编译器 goodGay类是Building类的好朋友,可以访问到Building类中私有内容
     friend class goodGay;
public:
     Building();
public:
     string m_SittingRoom; //客厅
 private:
     string m_BedRoom;//卧室
 };
//类外写成员函数
 Building::Building()
 {
     this->m_SittingRoom = "客厅";
     this->m_BedRoom = "卧室";
 }
goodGay::goodGay()
 {
     //创建建筑物对象
     building = new Building;
 }
void goodGay::visit()
 {
     cout << "好基友正在访问" << building->m_SittingRoom << endl;
     cout << "好基友正在访问" << building->m_BedRoom << endl;
 }
void test01()
 {
     goodGay gg;
     gg.visit();
}
int main(){
test01();
    system("pause");
     return 0;
 }
成员函数做友元:
#include<iostream>
 using namespace std;
 #include<string>
class Building;
 class goodGay
 {
 public:
    goodGay();
     void visit();  //只让visit函数作为Building的好朋友,可以访问Building中私有成员
     void visit2(); //让visit2函数不可以访问Building中私有成员
private:
     Building *building;
 };
 class Building
 {
     //告诉编译器  goodGay类中的visit成员函数 是Building好朋友,可以访问私有内容
     friend void goodGay::visit();
public:
     Building();
public:
     string m_SittingRoom; //客厅
 private:
     string m_BedRoom;//卧室
 };
Building::Building()
 {
     this->m_SittingRoom = "客厅";
     this->m_BedRoom = "卧室";
 }
goodGay::goodGay()
 {
     building = new Building;
 }
void goodGay::visit()
 {
     cout << "好基友正在访问" << building->m_SittingRoom << endl;
     cout << "好基友正在访问" << building->m_BedRoom << endl;
 }
void goodGay::visit2()
 {
     cout << "好基友正在访问" << building->m_SittingRoom << endl;
     //cout << "好基友正在访问" << building->m_BedRoom << endl;
 }
void test01()
 {
     goodGay  gg;
     gg.visit();
}
int main(){
     
     test01();
    system("pause");
     return 0;
 }













![[playbook] playbook运用](https://img-blog.csdnimg.cn/direct/47fad8cc8a904111a6110459a42312d4.png)





