C++:类和对象(友元)

友元的关键字为 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 不是类或命名空间名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值