美文网首页
C++ - 友元类

C++ - 友元类

作者: Mitchell | 来源:发表于2016-01-15 16:15 被阅读559次
    • 一个类的友元函数可以访问该类的私有成员
    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 的友元。

    相关文章

      网友评论

          本文标题:C++ - 友元类

          本文链接:https://www.haomeiwen.com/subject/ecyhkttx.html