友元的目的:让一个函数或者类访问另一个类中私有成员

关键字:friend

实现方式:

  • 全局函数做友元

      class House{
      	friend void goodGay(House* myhouse);//关键
      public:
      	House(){
          	  string sittingRoom="客厅";
              string bedroom="卧室";
          }
          string sittingRoom;
      private:
          string bedroom;
      }
      
      void goodGay(House* myhouse){
      	  cout<<myhouse.sittingRoom<<endl;
          cout<<myhouse.bedroom<<endl;
      }
      
      int main(){
      	House myhouse;
      	goodGay(myhouse);
      }
    
  • 类做友元

      //同理,在classA中加上:
      friend class classB;
      //那么在classB中就可以访问classA的私有成员
    
  • 成员函数做友元

      //类外定义成员函数:
      void classB::func(){
      	cout<<classA->val;
      }
      
      classA{
      	friend void classB::func();//classB下的func函数为友元函数
      private:
      	int val;
      }