您的当前位置:首页正文

C++ - 友元类

来源:花图问答
  • 一个类的友元函数可以访问该类的私有成员
class CCar;
class Driver{
  public:
    void ModifyCar(CCar * pCar);//改装汽车
};
class CCar{
  private:
    tin price;
    friend int MostExpensoveCar(CCar cars[],int total);
    friend void CDriver::ModifyCar(CCar * pCar);
};
void CDriver::ModifyCar(CCar * pCar)
{  
      PCar->prive +=1000;//汽车改装价值增加
}
int MostExpensiveCar(CCar cars[],int total)
{
    int tmpMax = -1;
    for(int i = 0;i<total;++i)
    {
        if(cars[i].price > tmpMax)
        {tmpMax = cars[i].price;}
        return tmpMax;
    }
}
int main(){
}
  • 将一个类的成员函数->另一个类的友元
class B{
    public:
          void function();
};
class A{
    friend void B::function();
};
  • 友元类
  • A 是 B的友元类 -> A的成员函数可以访问 B的私有成员
class CCar{
    private: 
          int price;
          friend class Driver;//声明 Driver 为友元类
};
class CDriver{
  public:
          CCar myCar;
          void ModifyCar(){ //改装汽车
                  myCar.price +=1000;//CDriver是CCar的友元类->可以访问其私有成员
        }
};

***注意:友元类之间的关系不能传递,不能继承 ***

  • 举例:
    • B 是 A 的友元,C 是 B 的友元,C 不是 A 的友元。
    • A 是 B 的友元,不代表 B 是 A 的友元。