友元

对于类的私有成员只能在类的成员函数内部访问。这样虽然带来了数据隐藏上的好处,但会增加
 程序书写上的麻烦。为了折中考虑,C++中提供了友元的概念。
 
 友元:友元函数、友元类
 在定义一个类时可以把一些函数(包括全局函数和其他类的成员函数)声明为"友元" ,在友元函数
 内部就可以访问类对象的私有成员。
     将其它类的成员函数声明为友元的写法:
         friend 返回值类型 其他类的类名::成员函数名(参数表);
  但是不能将其它类的私有成员函数声明为友元。

class CDriver{
    public:
        void ModifyCar(CCar *pCar);
};

class CCar{
    private:
        int price;
    // 声明友元
    friend int MostExpensiveCar(CCar *car, int total);
    friend void CDriver::ModifyCar(CCar *pCar); 
}; 

  一个类可以将另一个类声明为自己的友元,这样这个类的私有成员就可以被另一个类访问

class CCar{
    private:
        int price;
        
    // 声明为友元类 
    friend class CDriver;  
}; 

class CDriver{
    public:
        CCar myCar;
        void ModifyCar(){
            myCar.price += 2000;
        }
};

 

posted @ 2017-09-24 18:05  荒唐了年少  阅读(157)  评论(0编辑  收藏  举报