分为友元函数和友元类
友元函数:一个类的友元函数可以访问该类的私有成员
class CCar; // 提前声明CCar类class CDriver {public:void modifyCar(CCar * pCar);};class CCar {private:int price;friend int mostExpensiveCar(CCar cars[], int total); // 声明友元friend void CDriver::modifyCar(CCar * pCar); // 声明友元};void CDriver::modifyCar(CCar * pCar) {pCar->price += 1000;}int mostExpensiveCar(CCar cars[], int total) {...}
友元类:如果A是B的友元类,那么A的成员函数可以访问B的私有成员
class CCar {private:int price;friend class CDriver; // 声明友元类};class CDriver {public:CCar myCar;void modifyCar() {myCar.price += 1000;} // 友元类访问私有成员};
友元类之间不能继承,也不能传递
