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 的友元。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • //出自51博客:www.Amanda0928.51.com 第一章 一、选择题 1.B; (typedef ,t...
    Damongggggg阅读 13,846评论 0 1
  • 本文博客园地址:http://www.cnblogs.com/xiongxuanwen/p/4290086.htm...
    先之阅读 4,332评论 0 5
  • 伺候病人的日子,很难熬。 今天在某宝闲逛,无意中发现一款神器,对于爱吃春饼、鸡蛋饼和榴莲千层等薄饼的人来说,简直是...
    dac405572881阅读 3,624评论 0 0
  • 文/宝木笑 前两天和一个发小一起吃饭,这家伙在日本呆了5年,终于回来了,结果一顿饭就吃出问题来了。回想当年,我们一...
    宝木笑阅读 4,654评论 5 31
  • 爷爷九一年去世,过后每一个团圆的时候,爸爸都会说一句话:“每逢佳节倍思亲。”那时我还很小,不明白这句话的深刻涵义。...
    黄小丽的私人订制阅读 2,790评论 1 4