友元的关键字为 friend(声明一些特殊的函数或者类来作为另一个类的好朋友,访问这个类里面的私有成员)
友元的三种实现
- 全局函数做友元
-
#include <iostream> #include <string> using namespace std; class Building { //goodGay是Building的好朋友,可以访问Building中的私有成员 friend void goodGay(Building& building); public: Building() { m_SittingRoom = "客厅"; 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 test() { Building building; goodGay(building); } int main() { test(); system("pause"); return 0; }
-
- 类做友元
-
#include <iostream> #include <string> using namespace std; class Building { friend class GoodGay; //将GoodGay设置成好朋友 public: Building(); public: string m_SittingRoom; //客厅 private: string m_BedRoom; //卧室 }; //类外写成员函数 Building::Building() { m_SittingRoom = "客厅"; m_BedRoom = "卧室"; } class GoodGay { public: GoodGay(); //参观函数,访问Building中的属性 void visit(); Building* building; }; //类外写成员函数 GoodGay::GoodGay() { //创建一个建筑 building = new Building; } void GoodGay::visit() { cout << "正在访问:" << building->m_SittingRoom << endl; cout << "正在访问:" << building->m_BedRoom << endl; } void test() { GoodGay gay; gay.visit(); } int main() { test(); system("pause"); return 0; }
-
- 成员函数做友元
-
friend void GoodGay::visit1(); //将GoodGay中的visit1函数设置成好朋友 //有点问题,GoodGay 不是类或命名空间名称
-